乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 11|回复: 9

[编程交流] 循环的批处理文件

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:29:26 | 显示全部楼层 |阅读模式
大家好,我已经试着解决这个问题好几个小时了。我会给它更多的时间/天来尝试和解决它自己,但它似乎很简单,我看不出任何错误。
 
我需要将许多图形的设置IMAGEFRAME更改为“2”。我可以手动打开它们,但我还有两天的时间工作期结束,我还有其他事情要做
 
所以我读了很多关于批处理文件的文章,我想这可能就是答案。我自学了AutoCAD的脚本(虽然我想没有多少东西可以教)。
 
以下是脚本文件:
 
  1. IMAGEFRAME
  2. 2
  3. qsave
  4. QUIT

 
这是我在谷歌图书(不是我的)中找到的批处理文件:
 
  1. FOR %%f in ("C:\batchtest\*.dwg") DO START /WAIT
  2. "C:\Program Files\Autodesk\ACADM 2008\acad.exe"
  3. "%%f" /b "C:\IMAGEFRAME.scr"

 
显然,这些是我自己的文件路径,但据我所知,根据本书,批处理文件应在batchtest目录中找到以“.dwg”结尾的所有文件,打开autocad的一个实例,打开第一个图形,然后运行脚本(因为开关“/b”在那里)。脚本将关闭文件和AutoCAD。“/WAIT”应该使批处理文件等待打开下一个文件,直到第一个文件关闭,对吗?因此,一旦关闭了AutoCAD的第一个实例,就会弹出一个新实例并打开第二个文件,运行脚本并重复,直到全部关闭。处理dwg场。
 
它所做的是一次打开所有三个图形(在AutoCAD的三个单独实例中),然后忽略(我想?)切换,而不运行脚本。有一次,我确实让批处理文件等待尝试打开第二个和第三个文件(我正在用三个图形进行测试),直到之前打开的文件关闭,但是AutoCAD无法识别这些图形。对不起,我没有那个密码!
 
我编写这个批处理文件是为了只打开其中一个图形。这没问题。
 
  1. "C:\Program Files\Autodesk\ACADM 2008\acad.exe"
  2. "C:\batchtest\baysh-test.dwg" /b
  3. "C:\IMAGEFRAME.scr"

 
我查找了循环语法,没有发现第一批文件有任何错误。我做错了什么?
 
我正在Windows XP上使用AutoCAD 2008 Mechanical。除了脚本文件外,这里的所有代码都在一行中。
 
谢谢你的帮助!
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:41:29 | 显示全部楼层
我让它工作,它有一个想法。他说使用两个批处理文件而不是一个。
 
他的例子揭示了所有的问题。目录中的txt文件。
 
批处理文件#1:
 
  1. for %%f in ("C:\*.txt") do start /wait batch2.bat "%%f"

 
批处理文件#2:
 
  1. notepad %1
  2. exit

 
所以他告诉我,通过弹出正确的路径和我想要的开关等,将其适应AutoCAD。。。
 
批处理文件#1:
 
  1. for %%f in ("C:\batchtest\*.dwg") do start /wait batch2.bat
  2. "%%f"

 
批处理文件#2:
 
  1. "C:\Program Files\Autodesk\ACADM 2008\acad.exe" %1 /b
  2. "C:\IMAGEFRAME.scr"
  3. exit

 
同样,除了第二批处理文件中“退出”之前的“回车”之外,所有代码都在一行。
 
这很有效!对不起,我想是这条线。我现在要继续潜伏,呵呵。如果有人知道第一篇文章中的批处理文件有什么问题,请告诉我。谢谢大家!
回复

使用道具 举报

0

主题

12

帖子

13

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 12:44:03 | 显示全部楼层
很高兴你成功了。。。但是,下次要自动执行像imageframe这样的普通任务时,可能需要查看Autodesk的ScriptPro,它可以真正自动在多个图形上运行脚本。
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=4091678&linkID=9240618
回复

使用道具 举报

2

主题

17

帖子

15

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 12:52:55 | 显示全部楼层
在找到这篇文章后,我终于找到了这个蝙蝠文件的故事。
 
aflaeomor,您的问题答案是bat文件中缺少“c”,如下所示:
 
  1. FOR %%f in ("C:\batchtest\*.dwg") DO START /WAIT "c"
  2. "C:\Program Files\Autodesk\ACADM 2008\acad.exe"
  3. "%%f" /b "C:\IMAGEFRAME.scr"

 
别问我那是干什么的。我在某处发现了另一个帖子。希望有人能告诉我。
还有,%%f和%%v之间的差异是什么?
 
但现在我有一个不同的问题。如果文件名包含空格,为什么找不到图形?例如图1。dwg它找不到,但找到了图纸1。dwg确实如此。我可以在bat文件中添加一些内容吗?
 
Thanx公司
 
编辑:
 
好的,我已经通过更多的搜索找到了我的问题。
 
首先我注意到你不需要加“c”。您可以为c等空格放置“:\”Program Files“\…\(如果我错了,请更正我)
其次,我对不带空格的文件名的问题是将“”放在最后一个%%f的周围。(我错过了一些东西)
 
这是我的最终代码,最后运行:
  1. FOR %%f in (c:\script\*.dwg) do start /wait C:"Program Files""AutoCAD 2010"\acad.exe "%%f" /nologo /b C:\script\test.scr

我只是希望在同一个AutoCAD会话中打开图形,而不是让AutoCAD在整个时间内打开和关闭每个dwg。这需要更长的时间。
 
欢迎您的任何意见。
thanx公司
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 13:01:20 | 显示全部楼层
如果您希望自动处理多个图形,请查看我的批处理引擎(请参阅sig中的链接)。我承认目前这有点神秘(它是版本1),但我正在研究一个更好的解释。在那之前,我可以回答你的任何问题。
 
我去了。bat文件路由最初是我自己,但一个。bat文件为每个图形打开一个新的AutoCAD实例。实际上,你只需要一个脚本就可以完成整个过程。
回复

使用道具 举报

2

主题

17

帖子

15

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 13:02:54 | 显示全部楼层
thanx Freerefill,我会看看你的批处理引擎。
 
我也不喜欢这个。蝙蝠文件的故事就这么多。拖放a更容易。scr转换到AutoCAD中,运行速度很快。我的问题是,我需要处理100多个dwg+并且要快速创建脚本文件,更容易为每个dwg创建单行脚本。重复它们。所以这意味着空间将被计入回车,但这并不总是有效的。例如,对于编辑属性和输入替换文本的位置,脚本不会看到enter的空格。因此,唯一的选择是取消脚本文件,其中命令是每行的,因此这意味着,假设每个dwg脚本有10行,要快速做到这一点,请在word中运行宏,为我创建脚本。但从一个文件到另一个文件有很多复制和过去的内容。
 
在此处查看我的scr:
  1. _open "D:\Dwgs\drawing  1.dwg" -attedit n n drg_detail_bl dwg_rev 1 1 2 qsave close
  2. _open "D:\Dwgs\drawing  2.dwg" -attedit n n drg_detail_bl dwg_rev 1 1 2 qsave close

 
现在,这个scr在输入1处停止,并将其视为1 1 2,而不是介于两者之间。但将1-12放在单独的行中效果很好。
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 13:12:57 | 显示全部楼层
如果你想进行查找和替换,我可以帮助你设置批处理引擎,它也可以用于文本、多行文字和属性。。我似乎无法让它用于桌子。
回复

使用道具 举报

2

主题

17

帖子

15

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 13:16:39 | 显示全部楼层
如果你能帮我,Thanx会很高兴的。不确定如何使用批处理引擎。也许举几个例子会有帮助?
从上面的代码中可以看出:我将属性标记“dwg\u rev”从值1替换为2,它位于块“drg\u detail\u bl”中
 
thanx公司
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 13:24:31 | 显示全部楼层
我深表歉意。我是个傻瓜,匆匆忙忙地把它弄出来,然后我发现它有那么多的bug,其中最重要的是我没有准备好如何使用它的解释!我已经纠正了这个错误,虽然它仍然是一个正在进行的工作,我会更新后的仓促。
 
*编辑*-更新版本已经上传到我的原始帖子中,你可以通过我签名中的链接访问。即使发布了新的信息,我也不确定关于跳转主题的规则,我不想用第二个主题在论坛上乱贴。
回复

使用道具 举报

2

主题

17

帖子

15

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 13:33:36 | 显示全部楼层
thanx提供了所有文档和示例。我想知道批处理引擎是如何工作的,但现在还没有。
 
我正在打开和关闭图形,但没有做任何更改,出现错误。所以我的表达式的格式肯定不正确。看起来我可以让它打开一个自定义。scr文件称,它将完成这项工作,但也很难做到这一点。
 
以下是一些失败的尝试:
  1. (finalblitz '(("CMD" (vl-cmdf "-attedit" n n drg_detail_bl dwg_rev 1 1 2 QSAVE))) '("THIS") nil nil 1 ))
  2. (finalblitz '(("CMD" (vl-cmdf "SCR"))) '("THIS") nil nil 1 ))
  3. (finalblitz '(("CMD" (vl-cmdf "SCR" "c:\script test\script.scr"))) '("THIS") nil nil 1 ))

 
附言:我喜欢你的GR操场,Freerefill。很酷!!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 06:27 , Processed in 0.485951 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表