[英]Want to execute command on each file in directory one at a time through batch file windows
[英]Want to execute two commands in windows batch file one by one
我想將假脫機文件從假脫機文件夾一一發送到打印機,處理完每個文件后將其移動到另一個文件夾或刪除它。 但是,當我嘗試在批處理文件下運行時,由於批處理,它直接移動假脫機文件而不發送給打印機。
for %%f in (C:\WINDOWS\system32\spool\PRINTERS\*.SPL) do (
echo %%~nf
start "" E:\spool\xyz\tp.exe "C:\WINDOWS\system32\spool\PRINTERS\%%~nf.SPL" "HP Printer"
move "C:\WINDOWS\system32\spool\PRINTERS\%%~nf.SPL" d:\%%~nf.txt
)
因此需要任何替代選項,而無需使用Windows PowerShell。
提前致謝。
不是因為批量處理。 默認情況下,批處理在繼續操作之前會等待命令終止。 因此,應該忽略start
。
問題實際上是start
命令。 默認情況下, start
將作為新進程執行程序,而不會等待其完成。 請改用start /WAIT
, /WAIT
選項將要求它等待。 但是正如我之前所說,您甚至不需要start
。 假設程序完成任務后退出,則應該執行以下操作:
for %%f in ("C:\WINDOWS\system32\spool\PRINTERS\*.SPL") do (
echo %%~nf
E:\spool\xyz\tp.exe "%%~ff" "HP Printer"
move "%%~ff" d:\%%~nf.txt
)
一般來說應該這樣做。 但是,如果程序E:\\spool\\xyz\\tp.exe
本身啟動了某種后台進程並退出而沒有等待其終止,則即使start /WAIT
也無濟於事。 由於我不知道您使用的程序( E:\\spool\\xyz\\tp.exe
),在這種情況下,我將無法為您提供幫助。
編輯 :我在代碼中做了一些改進:您不需要指定整個路徑來獲取與循環變量相對應的文件, %%~ff
將為您完成此工作(請參見其他鏈接 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.