批处理文件在执行后无限循环闪烁命令提示符
Batch file flashing command prompt in endless loop after being executed
背景
我想用ROBOCOPY备份文件夹。为了了解这一点,我创建了一个测试源文件夹,其中包含其他子文件夹和虚拟文件。
F:\RoboCopy\RoboCopy_Files
我能够从命令行和 PowerShell 中对源文件夹进行 ROBOCOPY(使用 Windows10)。
ROBOCOPY "RoboCopy_Files" "RoboCopy_Files_Testing" /MIR
它完全符合我的要求。
现在我将命令放入批处理文件 Robocopy.cmd
.
问题症状
但是,当我将 相同的命令放入 Robocopy.cmd 文件 时,在 F:\RoboCopy 文件夹中运行 它,我只得到 闪烁 cmd window 并且在不断增加的行数上重复我的命令。
如何将命令放入 CMD 文件(例如 Robocopy.cmd)以便稍后 use/share/schedule?如何在不执行命令的情况下防止命令提示符无限循环闪烁?
注意:我觉得这更多的是学习如何将 cmd 脚本放入文件,而不是如何使用 ROBOCOPY。
原因:文件和命令同名
我想在 ROBOCOPY 文件中使用 ROBOCOPY 命令。这是一个错误。
该文件最终会调用自身。
解决方案 1:重命名批处理文件
一种解决方案是将批处理文件重命名为不同于文件中的命令。
解决方案 2:使用更明确的命令调用
另一种解决方案可能是使用 ROBOCOPY.exe 或明确指定 exe 的完整路径,例如 C:...\robocopy.exe。这将防止调用命令与调用批处理文件本身的“混淆”。
解决方案 1 x 2
最佳解决方案(再次感谢 Mofi)是将 1 x 2 组合在一起。使用唯一的批处理文件名并在批处理文件中指定命令 (exe) 的完整路径。
有用的相关命令:要确定命令 (exe) 的完整路径,请参阅 WHERE command (e.g. Where Robocopy.exe - This should be somewhere in windows folder.), system variables (e.g. SS64), or the command SET。
我的完整版本是 运行 例如 BackupRobocopyFiles.cmd 行:
%SystemRoot%\System32\robocopy.exe "RoboCopy_Files" "RoboCopy_Files_Testing" /MIR /R:2
注意:仅当 cmd 文件位于根文件夹 F:\RoboCopy 中时,这才有效。如果我想 运行 来自不同文件夹(或任务调度程序)的 cmd,我会指定 SOURCE_FOLDER 和 DESTINATION_FOLDER ROBOCOPY 命令参数的完整路径。
贡献
答案是根据“MC ND”、“eryksun”的评论找到的。 “Mofi”确实指出,原来的 Q 没有帮助。感谢大家。
背景
我想用ROBOCOPY备份文件夹。为了了解这一点,我创建了一个测试源文件夹,其中包含其他子文件夹和虚拟文件。
F:\RoboCopy\RoboCopy_Files
我能够从命令行和 PowerShell 中对源文件夹进行 ROBOCOPY(使用 Windows10)。
ROBOCOPY "RoboCopy_Files" "RoboCopy_Files_Testing" /MIR
它完全符合我的要求。
现在我将命令放入批处理文件 Robocopy.cmd
.
问题症状
但是,当我将 相同的命令放入 Robocopy.cmd 文件 时,在 F:\RoboCopy 文件夹中运行 它,我只得到 闪烁 cmd window 并且在不断增加的行数上重复我的命令。
如何将命令放入 CMD 文件(例如 Robocopy.cmd)以便稍后 use/share/schedule?如何在不执行命令的情况下防止命令提示符无限循环闪烁?
注意:我觉得这更多的是学习如何将 cmd 脚本放入文件,而不是如何使用 ROBOCOPY。
原因:文件和命令同名
我想在 ROBOCOPY 文件中使用 ROBOCOPY 命令。这是一个错误。
该文件最终会调用自身。
解决方案 1:重命名批处理文件
一种解决方案是将批处理文件重命名为不同于文件中的命令。
解决方案 2:使用更明确的命令调用
另一种解决方案可能是使用 ROBOCOPY.exe 或明确指定 exe 的完整路径,例如 C:...\robocopy.exe。这将防止调用命令与调用批处理文件本身的“混淆”。
解决方案 1 x 2
最佳解决方案(再次感谢 Mofi)是将 1 x 2 组合在一起。使用唯一的批处理文件名并在批处理文件中指定命令 (exe) 的完整路径。
有用的相关命令:要确定命令 (exe) 的完整路径,请参阅 WHERE command (e.g. Where Robocopy.exe - This should be somewhere in windows folder.), system variables (e.g. SS64), or the command SET。
我的完整版本是 运行 例如 BackupRobocopyFiles.cmd 行:
%SystemRoot%\System32\robocopy.exe "RoboCopy_Files" "RoboCopy_Files_Testing" /MIR /R:2
注意:仅当 cmd 文件位于根文件夹 F:\RoboCopy 中时,这才有效。如果我想 运行 来自不同文件夹(或任务调度程序)的 cmd,我会指定 SOURCE_FOLDER 和 DESTINATION_FOLDER ROBOCOPY 命令参数的完整路径。
贡献
答案是根据“MC ND”、“eryksun”的评论找到的。 “Mofi”确实指出,原来的 Q 没有帮助。感谢大家。