2014-06-30 1243 views
3

我試圖從一個共享驅動器複製另一個共享驅動器的今天修改的文件。 但是當我執行批處理文件時,它顯示以下錯誤。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 
+0

是的 - 我只能提供一種解決方法 - 您需要將src和dest路徑映射到驅動器號,然後使用這些驅動器號代替。 – Bob

+0

你如何做那個映射? – subash

+0

但我是這些腳本的新手,你能幫我把src和dest路徑映射到驅動器盤符嗎? – subash

回答

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 
+0

但是[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'語句不是不必要的嗎? –

1

沒有理由使用pushd。 for循環的以下修改可能就足夠了。

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

這是正確的 - xcopy支持網絡路徑 - 我甚至沒有想過這個。 – Bob

相關問題