如何在带有空格的网络路径中使用 xcopy 和 /exclude?

如何在带有空格的网络路径中使用 xcopy 和 /exclude?

我想xcopy在网络路径上使用。我确实这么做了。

问题是我想使用一个/exclude选项。但文件位于网络路径中。但网络路径中有空格(s:\my path)。

这就是我使用的它正在发挥作用现在没有 /excludeS:是映射的网络文件):

xcopy "S:\TI\My Path" "C:\Path" /S /I /D /Q /Y

我尝试添加一个/exclude文件本地有用很好(我想到我必须使用 8.3 名称):

xcopy "S:\TI\My Path" "C:\Path" /S /I /D /Q /Y /exclude:c:\MyConf~1\cfg.txt

但当我移动到网络路径时,同样的方法不起作用。我认为主要原因是网络路径没有 8.3 名称 dir /x

xcopy "S:\TI\My Path" "C:\Path" /S /I /D /Q /Y /exclude:s:\MyConf~1\cfg.txt

无法读取文件:s:\MyConf~1\cfg.txt

上面的代码是我从巴西葡萄牙语翻译过来的,可能与xcopy返回的结果不完全一致。但我想你应该明白了。

我尝试过使用未映射的版本,但实际上并不实用并且没有起作用。

xcopy "S:\TI\My Path" "C:\Path" /S /I /D /Q /Y /exclude:\\server\MyConf~1\cfg.txt

有什么方法可以实现这一点吗xcopy?有没有不需要在每台电脑上安装的同类产品?

答案1

我在用户的想法的帮助下想出了一个不太优雅的解决方案S. 布罗特斯给了我评论

我找到了一个代码来查看与该信件相关的完整 UNC 路径这里并做了一些改变。

我的代码找到了我已经映射的字母的完整 UNC 路径(在本例中s:)获取了完整的 UNC 路径并连接起来。

之后我将其映射到未使用的字母并在exclude参数中使用它:

@REM Get the full UNC path, maps it to a letter, use the letter in the exclude parameter and exludes the mapped letter
cls

@set _NetworkPath=
@set _newLetterDrive=y

@REM finds the complete network path mapped to s:
@pushd "s:"

@for /f "tokens=2" %%i in ('wmic path win32_mappedlogicaldisk get deviceid^, providername ^| findstr /i "%CD:~0,2%"') do @(set _NetworkPath=%%i%CD:~2%)

@REM concatenates the actual network path with the added folder I need
@REM @echo. Debug info %_NetworkPath%

@set _newPath="%_NetworkPath%TI\My configs"

@REM maps deep into the folder to a known not used letter
net use %_newLetterDrive%: %_newPath%

@REM finally call the xcopy with the exclude file pointed out directly by y:
@REM @echo Debug info %_newPath%

xcopy "S:\TI\My Path" "C:\Path" /S /I /D /Q /Y /exclude:%_newLetterDrive%:\cfg.txt


@REM removes the used letter
net use %_newLetterDrive%: /delete /yes

相关内容