如何解决如何处理批处理文件中UNC路径中的空间?
我的团队最近使用的 Windows 服务器升级了。曾经可以正常工作的批处理文件现在由于目录路径中的间距而无法工作。我认为 robocopy
命令失败了。
如何让命令正常工作并正确识别目录路径中的空间?
@ECHO OFF
:start
rem GOTO end
if exist %1*_desc.xml (
del %1*_desc.xml
goto final
)
:final
rem Rename files with -en-us
setlocal enabledelayedexpansion
set "Pattern=-en-us"
set "Replace="
for %%# in (%1*.*) do (
set "File=%%~nx#"
ren "%%#" "!_File:%Pattern%=%replace%!"
)
:end
copy %1*.* %2*.*
::robocopy "%1" "%2" *.*
正在执行的命令:
D:\scripts\Maintenance\COGCleanup.bat "\\nycb\corp$\group\IT\IT-NY\Application Development\CognosTest\"
\\nycb\corp$\group\IT\IT-NY\Application Development\CognosTest\*.*
Access is denied.
0 file(s) copied.
注意:在上述错误消息中,目录的第一部分(访问被拒绝之前)带有蓝色下划线。我不能在这里复制它。 Application
之后的空格是导致问题的原因。
解决方法
如果这是您使用的命令:
D:\scripts\Maintenance\COGCleanup.bat "\\nycb\corp$\group\IT\IT-NY\Application Development\CognosTest\"
%1
是 "\\nycb\corp$\group\IT\IT-NY\Application Development\CognosTest\"
(包括引号)。
%1*.*
是 "\\nycb\corp$\group\IT\IT-NY\Application Development\CognosTest\"*.*
"%1"
是 ""\\nycb\corp$\group\IT\IT-NY\Application Development\CognosTest\""
,将被解析为 2 个参数 \\nycb\corp$\group\IT\IT-NY\Application
和 Development\CognosTest\
。
您可以通过使用 "%~1"
(带引号)来修复。
%~1
是不带引号的 %1
(如果有引号)。不管%1
是"foo"
还是foo
,%~1
总是foo
,而"%~1"
总是"foo"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。