Batch file 如何处理批处理文件中UNC路径中的空间?
我的团队最近使用的Windows服务器已升级。以前工作正常的批处理文件现在由于目录路径中的间距而无法工作。我认为Batch file 如何处理批处理文件中UNC路径中的空间?,batch-file,windows-scripting,Batch File,Windows Scripting,我的团队最近使用的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 enabledelayed
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.
注意:在上述错误消息中,目录的第一部分(拒绝访问之前)用蓝色下划线。我不能在这里复制它。
应用程序
后的空格是导致问题的原因。如果这是您使用的命令:
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\”
,将被解析为两个参数\\nycb\corp$\group\IT\IT-NY\Application
和Development\CognosTest\
您可以使用“%~1”
(带引号)修复is
%~1
是不带引号的%1
,如果有引号的话。无论%1
是“foo”
还是foo
,%1
始终是foo
,“%1”
始终是“foo”打开a,运行cmd/?
,仔细完整地阅读输出帮助。然后运行call/?
并再次阅读整个输出帮助。我强烈建议将如果存在%1*\u desc.xml
替换为如果存在“%~1*\u desc.xml”
,将替换为%%\in(%1**)do
替换为for%%\in(“%~1*”).do
。在运行help
或START/?
时可以看到START命令。可以通过在批处理文件:start
中使用来命名标签start
,但建议避免使用命令名作为标签名。我建议使用:begin
。谢谢您的评论!流程正在运行。感谢您的评论!我感谢你的帮助。这一进程再次发挥作用。