【发布时间】:2016-04-07 02:14:05
【问题描述】:
上下文
我想我可以通过正确创建
*.bat file来解决问题。我正在自动化一个名为
Acronis Backup and Recovery的备份程序中的进程。我能够制作一个脚本
(jScript),它可以正确创建除一部分之外的所有语法。在正常的命令提示符下,我将运行的命令如下所示
acrocmd backup file --include="C:\documents\Gale_thesis.doc" "D:\Sandbox\!oDC!-IMG_0222.MOV" "C:\temp\magnifyReader" --loc="D:\backups" --arc="Backup1a"
我正在创建的
jScript可以毫无问题地生成它并保存为 *.bat 文件。如果我的文件名是干净的,这可以完美地工作。干净是指批处理文件认为没有字符是关键字和命令。每当我有“复制”之类的词或“!”之类的字符时在文件名中它失败了。
问题
所以我现在想知道从文本文件中加载变量是否可以解决问题?
我相信很多读者都知道,在命令行加载多个文件/文件夹路径时,您需要用双引号将它们括起来。
-
1234563
我曾尝试关注有关使用 for /f 等的信息。
但是示例不够广泛,我无法理解,似乎没有人解释如何将这些变量与其他语法混合使用。
我对使用 *.bat 文件中的变量了解一些。我的 jScript 应用程序可以生成任何格式的文本列表,转义,任何需要的。
谢谢
【问题讨论】:
-
在你开始疯狂追逐之前(使用你不了解的技术发明一个复杂的“解决方案”),你应该了解为什么你的原始代码会失败。如果启用延迟扩展,我可以看到
!可能会导致问题,但我无法想象您为什么需要延迟扩展。我无法想象包含copy的文件名将如何失败。请编辑您的问题并发布一个成功的“干净名称”示例生成的 bat 脚本。然后发布一个示例 bat 脚本,该脚本以!的名称失败,一个以copy的名称命名。另外,展示你是如何启动 bat 脚本的。 -
!oDC!是否应该是文件名中的字符串文字(这将是一个非常不寻常的名称)?还是应该是环境变量的延迟扩展?
标签: variables batch-file command