当前目录pushd时,cmd不支持unc路径

时间:2014-06-30 04:05:52

标签: batch-file command-prompt

我正在尝试从一个共享驱动器复制今天修改的文件另一个共享驱动器。 但是当我执行批处理文件时,它会显示以下错误。

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

没有理由使用pushd。以下修改for循环可能就足够了。

for /f %%a in ('dir "%source%" /b /a-d /o-d') do call :PROCESS "%%a"