簡體   English   中英

想要在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM