簡體   English   中英

執行后無限循環中的批處理文件閃爍命令提示符

[英]Batch file flashing command prompt in endless loop after being executed

背景

我想使用ROBOCOPY來備份文件夾。 為了解這一點,我創建了一個測試源文件夾,其中包含其他子文件夾和虛擬文件。

F:\RoboCopy\RoboCopy_Files

我能夠從命令行和PowerShell(使用Windows 10)ROBOCOPY源文件夾。

ROBOCOPY "RoboCopy_Files" "RoboCopy_Files_Testing" /MIR

它完全符合我的要求。
現在我將命令放入批處理文件Robocopy.cmd

問題症狀

但是,當我將相同的命令放入Robocopy.cmd文件時 ,在根F:\\ RoboCopy文件夾中運行它,我只得到閃爍的cmd窗口 ,我的命令在越來越多的行上重復。

如何將命令放入CMD文件(例如Robocopy.cmd)以供以后使用/共享/計划? 如何在不運行命令的情況下防止命令提示符在無限循環中閃爍?

注意:我覺得這更像是學習如何將cmd腳本放入文件,而不是如何使用ROBOCOPY。

原因:文件和命令具有相同的名稱

我想在ROBOCOPY文件中使用ROBOCOPY命令。 這是個錯誤。
該文件最終調用自己。

解決方案1:重命名批處理文件

一種解決方案是將批處理文件重命名為與文件中的命令不同。

解決方案2:使用更明確的命令調用

另一個解決方案可能是使用ROBOCOPY.exe或顯式指定exe的完整路徑,如C:... \\ robocopy.exe 這可以防止調用命令與調用批處理文件本身的“混淆”。

解決方案1 ​​x 2

最好的解決方案(再次是Mofi)是將1 x 2組合在一起。 使用唯一的批處理文件名並在批處理文件中指定命令(exe)的完整路徑。

有用的相關命令:要確定命令(exe)的完整路徑,請參閱WHERE命令(例如,Robocopy.exe - 這應該位於Windows文件夾中的某個位置。),系統變量(例如SS64 )或命令SET

在我的情況下,完整版將運行例如BackupRobocopyFiles.cmd與行:

%SystemRoot%\System32\robocopy.exe "RoboCopy_Files" "RoboCopy_Files_Testing" /MIR /R:2  

注意:僅當cmd文件位於根文件夾F:\\ RoboCopy中時,此方法才有效。 如果我想從不同的文件夾(或任務sheduler)運行cmd,我將指定ROBOCOPY命令的SOURCE_FOLDER和DESTINATION_FOLDER參數的完整路徑。

捐款

根據以下評論找到答案:“MC ND”,“eryksun”。 “Mofi”確實指出,原來的Q沒有幫助。 謝謝大家。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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