繁体   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