Windows 批处理脚本问题 - 引用包含空格的变量

标签 windows variables batch-file cmd spaces

所以这是我的问题: 我想使用 %cd% 以便用户可以在他们想要放置脚本的任何地方执行脚本,但是如果 %cd% 包含空格,那么它将失败(无论引号如何)。如果我对路径进行硬编码,它将使用引号起作用,但如果它是一个变量,它将失败。

失败:(如果 %cd% 包含空格) “%cd%\测试.bat”

作品: "C:\Program Files\Testing.bat"

有什么想法吗?

最佳答案

%CD% 不是正确的方法,因为它指示调用脚本时用户 所在的目录,而不是脚本所在的目录居住。

改为使用 %~dp0%0 中提取驱动器和路径信息:

REM C:\Program Files\test_caller.bat
@echo I am the caller and I reside in: "%~dp0"
@"%~dp0\test.bat"

...

REM C:\Program Files\test.bat
@echo Yippeee!

...

C:\>"\Program Files\test_caller.bat"
I am the caller and I reside in: "C:\Program Files\"
Yippeee!

C:\>e:

E:\>"C:\Program Files\test_caller.bat"
I am the caller and I reside in: "C:\Program Files\"
Yippeee!

关于Windows 批处理脚本问题 - 引用包含空格的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2612074/

相关文章:

windows - compileKotlin警告:具有目录目标的 '-d'选项将被忽略,因为指定了 '-Xbuild-file'

C++ Hooking kernel32.dll OpenProcess 走弯路

javascript - for循环不修改全局变量?

windows - 如何使用用户输入的文件名和文件号创建 1 到 N 个文件?

c - 独立于汇编操作系统的原子比较和交换

windows - 加密的 RSA key 不适用于 Windows 中的 MongoDB

windows - 何时以及在批处理文件中的 FOR/F 和 WMIC 中转义什么

windows - 从 cmd.exe 或 Windows Run 运行命令的区别

variables - golang 变量替换

javascript - javascript 和 if-else 函数的新手。 (控制台日志中没有错误信息)