aflaeomor 发表于 2022-7-6 12:29:26

循环的批处理文件

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

IMAGEFRAME
2
qsave
QUIT


 
这是我在谷歌图书(不是我的)中找到的批处理文件:
 

FOR %%f in ("C:\batchtest\*.dwg") DO START /WAIT
"C:\Program Files\Autodesk\ACADM 2008\acad.exe"
"%%f" /b "C:\IMAGEFRAME.scr"

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

"C:\Program Files\Autodesk\ACADM 2008\acad.exe"
"C:\batchtest\baysh-test.dwg" /b
"C:\IMAGEFRAME.scr"

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

aflaeomor 发表于 2022-7-6 12:41:29

我让它工作,它有一个想法。他说使用两个批处理文件而不是一个。
 
他的例子揭示了所有的问题。目录中的txt文件。
 
批处理文件#1:
 

for %%f in ("C:\*.txt") do start /wait batch2.bat "%%f"

 
批处理文件#2:
 

notepad %1
exit

 
所以他告诉我,通过弹出正确的路径和我想要的开关等,将其适应AutoCAD。。。
 
批处理文件#1:
 

for %%f in ("C:\batchtest\*.dwg") do start /wait batch2.bat
"%%f"

 
批处理文件#2:
 

"C:\Program Files\Autodesk\ACADM 2008\acad.exe" %1 /b
"C:\IMAGEFRAME.scr"
exit

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

architecture68- 发表于 2022-7-6 12:44:03

很高兴你成功了。。。但是,下次要自动执行像imageframe这样的普通任务时,可能需要查看Autodesk的ScriptPro,它可以真正自动在多个图形上运行脚本。
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=4091678&linkID=9240618

rustym 发表于 2022-7-6 12:52:55

在找到这篇文章后,我终于找到了这个蝙蝠文件的故事。
 
aflaeomor,您的问题答案是bat文件中缺少“c”,如下所示:
 
FOR %%f in ("C:\batchtest\*.dwg") DO START /WAIT "c"
"C:\Program Files\Autodesk\ACADM 2008\acad.exe"
"%%f" /b "C:\IMAGEFRAME.scr"
 
别问我那是干什么的。我在某处发现了另一个帖子。希望有人能告诉我。
还有,%%f和%%v之间的差异是什么?
 
但现在我有一个不同的问题。如果文件名包含空格,为什么找不到图形?例如图1。dwg它找不到,但找到了图纸1。dwg确实如此。我可以在bat文件中添加一些内容吗?
 
Thanx公司
 
编辑:
 
好的,我已经通过更多的搜索找到了我的问题。
 
首先我注意到你不需要加“c”。您可以为c等空格放置“:\”Program Files“\…\(如果我错了,请更正我)
其次,我对不带空格的文件名的问题是将“”放在最后一个%%f的周围。(我错过了一些东西)
 
这是我的最终代码,最后运行:
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公司

Freerefill 发表于 2022-7-6 13:01:20

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

rustym 发表于 2022-7-6 13:02:54

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

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

Freerefill 发表于 2022-7-6 13:12:57

如果你想进行查找和替换,我可以帮助你设置批处理引擎,它也可以用于文本、多行文字和属性。。我似乎无法让它用于桌子。

rustym 发表于 2022-7-6 13:16:39

如果你能帮我,Thanx会很高兴的。不确定如何使用批处理引擎。也许举几个例子会有帮助?
从上面的代码中可以看出:我将属性标记“dwg\u rev”从值1替换为2,它位于块“drg\u detail\u bl”中
 
thanx公司

Freerefill 发表于 2022-7-6 13:24:31

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

rustym 发表于 2022-7-6 13:33:36

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

(finalblitz '(("CMD" (vl-cmdf "SCR"))) '("THIS") nil nil 1 ))

(finalblitz '(("CMD" (vl-cmdf "SCR" "c:\script test\script.scr"))) '("THIS") nil nil 1 ))

 
附言:我喜欢你的GR操场,Freerefill。很酷!!
页: [1]
查看完整版本: 循环的批处理文件