繁体   English   中英

批处理脚本中带有空格的路径名

[英]pathnames with spaces in batch script

我在批处理脚本中的目录名称中存在空格问题。

我存储一个基本目录,然后使用它来创建子目录和文件,例如:

set basepath=c:\some\path
set logdir=%basepath%\log
set logfile=%logdir%\test.log

但是某些服务器上的基本路径中有空格。 早些时候,我使用dir /x来获得8.3的缩写名称,但是我遇到了一台服务器,该服务器不起作用(显然有一些设置可以禁用此功能,并且我没有特权将其重新打开)。 所以现在我想弄清楚这一点。 我需要将文件名/目录连接到基本路径,基本路径中可能有空格。 我尝试使用双引号,但是没有用。

在命令提示符下,可以使用双引号目录和非双引号目录的组合来执行cd "some path"\\with\\spaces操作。 但这在批处理脚本中不起作用。

有什么建议么?

set "basePath=c:\somewhere\over the rainbow"
set "logDir=%basePath%\logs"
set "logFile=%logDir%\kansas.log"

>> "%logFile%" echo This is a test
cd "%logDir%"

不要在变量值内插入引号(除非有必要)。

使用引号将set命令引起来,以确保变量中没有存储其他空格并保护特殊字符。

在使用变量的最终命令中,将引号放在正确的位置。

仅在需要实际使用环境变量时,才在环境变量周围加上双引号。

set basepath=c:\some\path with spaces
set logdir=%basepath%\log

xcopy *.log "%logdir%" 

然后将其引用为"%logdir%" ,它将扩展为"c:\\some\\path with spaces\\log" 之所以可行,是因为set所有内容都放在了=之后, 除了 在环境变量中包含尾随空格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM