Bob*_*der 6 cmd batch-file windows-console
我不知道如何准确描述我正在尝试做什么,但这里是一个示例批处理文件,演示了我无法弄清楚:
我有一个批处理文件.在该批处理文件中,我正在尝试创建一个目录:
Set CopyFrom = %~dp0
if Exist "%ProgramFiles(x86)" (
Set TargetDir = %ProgramFiles(x86)%\My Directory Name has spaces
)
md %TargetDir%\NewSubFolder
copy %CopyFrom%\SourceFile.zip %TargetDir%\NewSubFolder
Run Code Online (Sandbox Code Playgroud)
我的批处理文件在第4行失败Set TargetDir =...:
\My was unexpected at this time
Run Code Online (Sandbox Code Playgroud)
我假设这是因为我的路径名中有空格.我以为我可以用引号包装我的变量:
Set TargetDir = "%ProgramFiles(x86)%\My Directory Name has spaces"
Run Code Online (Sandbox Code Playgroud)
但是当我到达创建目录的行时,它失败了,因为%TargetDir%现在用引号括起来.md "%TargetDir%"\NewSubFolder
这可以修复,还是我应该写一个VBScript来解决问题?
只需将表达式放在引号中,如下所示:
C:\>Set "TargetDir=%ProgramFiles%\My Directory Name has spaces"
C:\>echo %TargetDir%
C:\Program Files\My Directory Name has spaces
Run Code Online (Sandbox Code Playgroud)
注意:它会在引号内扩展变量,如果它也有空格,则需要引用它.
现在你可以引用它来执行你的操作:
md "%TargetDir%\NewSubFolder"
Run Code Online (Sandbox Code Playgroud)