Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何处理批处理文件中UNC路径中的空间?_Batch File_Windows Scripting - Fatal编程技术网

Batch file 如何处理批处理文件中UNC路径中的空间?

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

我的团队最近使用的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.

注意:在上述错误消息中,目录的第一部分(拒绝访问之前)用蓝色下划线。我不能在这里复制它。
应用程序
后的空格是导致问题的原因。

如果这是您使用的命令:

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
。谢谢您的评论!流程正在运行。感谢您的评论!我感谢你的帮助。这一进程再次发挥作用。