cmd不支持当前目录下的unc路径
我试图从一个共享驱动器复制另一个共享驱动器的今天修改的文件。 但是当我执行批处理文件时,它显示以下错误。cmd不支持当前目录下的unc路径
CMD不支持UNC路径,当前目录
的脚本如下
@echo off
Set PhotosrcPath=\\hqcp-appsvr01\Files\ApplicationDocuments\AppDocs\49\PHOTO\
Set PhotodestPath=\\hqcp-appsvr02\Files\ApplicationDocuments\AppDocs\49\PHOTO\
::Copy photoFiles from server1 to server2 Made Or Modified Today
@echo off
set source=%d%%PhotosrcPath%
set dest=%d%%PhotodestPath%
pushd "%source%"
set t=%date:~4%
echo %t%
for /f %%a in ('dir /b /a-d /o-d') do call :PROCESS "%%a"
goto :eof
popd
:PROCESS
for /f %%j in ('echo %~t1') do set d=%%j
if "%d%"=="%t%" Xcopy /y %1 "%dest%"
goto :eof
net use X: \\hqcp-appsvr01\Files\ApplicationDocuments\AppDocs\49\PHOTO
net use Y: \\hqcp-appsvr02\Files\ApplicationDocuments\AppDocs\49\PHOTO
::Copy photoFiles from server1 to server2 Made Or Modified Today
@echo off
set source=X:\
set dest=Y:\
pushd "%source%"
set t=%date:~4%
echo %t%
for /f %%a in ('dir /b /a-d /o-d') do call :PROCESS "%%a"
popd
net use Y: /d /y
net use X: /d /y
goto :eof
:PROCESS
for /f %%j in ('echo %~t1') do set d=%%j
if "%d%"=="%t%" Xcopy /y %1 "%dest%"
goto :eof
类似的东西可能会奏效。查找NET USE获取更多信息。
我很好奇你为什么不仅仅使用XCOPY--我认为/ D命令可以做你需要的。我也会投入一个/ M。
xcopy \\hqcp-appsvr01\Files\ApplicationDocuments\AppDocs\49\PHOTO\*.* \\hqcp-appsvr02\Files\ApplicationDocuments\AppDocs\49\PHOTO\*.* /y /d /m
但是[Microsoft推送文档](http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/pushd.mspx?mfr=true&tduid=(df0dead6460f26ca30517cce6f76eb9e)(266696) (1503186)(skim725X6551X1fa61b02269089e3b3870af3e7622078)())说:“如果指定了一个网络路径,pushd命令暂时将第一个未使用的驱动器号(以Z开头:)指定给指定的网络资源”。那么你的'net use'语句不是不必要的吗? –
没有理由使用pushd。 for循环的以下修改可能就足够了。
for /f %%a in ('dir "%source%" /b /a-d /o-d') do call :PROCESS "%%a"
这是正确的 - xcopy支持网络路径 - 我甚至没有想过这个。 – Bob
是的 - 我只能提供一种解决方法 - 您需要将src和dest路径映射到驱动器号,然后使用这些驱动器号代替。 – Bob
你如何做那个映射? – subash
但我是这些脚本的新手,你能帮我把src和dest路径映射到驱动器盘符吗? – subash