2013-07-22 56 views
0

使用Robocopy從文件名子字符串中自動複製和創建目錄是否可行?使用Robocopy從文件名的一部分創建子文件夾名並使用Robocopy複製文件

我的意思是我有這樣的文件。 LAJ00306130201004626.rc前8個字符控制號碼LAJ00306 =控制號碼)這將是文件夾的名稱,其餘的是日期和時間(日期= 130201)(時間= 004626)。

 
LAJ00306130201004626.rc 
LAJ00306130202004626.rc 
LAJ00306130203004626.rc 
LAJ00307130201004626.rc 
LAJ00307130202004626.rc 

我想從文件名中複製和創建文件夾,就像在下面的文件名並複製之前提到的文件一樣。

LAJ00306 
LAJ00307 

我希望是明確的,如果有必要問我要了解更多信息

回答

1

試試這個:

@echo off 
pushd "c:\source folder" 
setlocal enabledelayedexpansion 
for %%a in (*.rc) do (
    set "name=%%a" 
    robocopy "%cd%" "%%a" "D:\target directory\!name:~0,8!" 
) 
popd 

問題的答案是:

pushd "drive:\path"使得該位置的當前工作目錄。
popd恢復最後的工作目錄
setlocal enabledelayedexpansion允許您使用!變量更改和使用循環內的變量!句法。

如果你的2000個文件在一個文件夾中,那麼它應該可以工作 - 但首先在一些示例文件上測試它,這樣你就可以看到它是如何工作的。

+0

謝謝foxidrive你能解釋一下什麼是pushd,popd和enabledelayedexpansion。他們是超過2000個文件我必須複製每一天這將工作在白衣這個條件,關於 – Miguel

+0

看到我的答案爲編輯和增加的信息。 – foxidrive

+0

非常感謝Foxidrive這真的很有用。這個網站真的很有趣。看你Foxidrive – Miguel

0
@ECHO OFF 
SETLOCAL 
SET "sourcedir=." 
SET "destdir=c:\destdir" 
FOR /f "tokens=1*delims=_" %%i IN (
'dir /b /a-d "%sourcedir%\*_*."' 
) DO XCOPY /b "%sourcedir%\%%i_%%j" "%destdir%\%%i\" 
GOTO :EOF 

這應該完成所描述的任務。當然,您需要設置源目錄和目標目錄。將>nul添加到XCOPY行末尾以禁止「複製」消息。

+0

你好,彼得謝謝你的迴應。我只是更新我的問題更清楚,我希望你能幫助我們。這裏的問題是我必須使用Robocopy程序可以與Robocopy一起使用嗎?問候 – Miguel

2

試試這個,看看輸出和MDROBOCOPY之前刪除echo S,如果它看起來不錯:

@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION 
SET "sourcefolder=." 
SET "targetfolder=X:\data" 

CD /d "%sourcefolder%" 
FOR %%a IN (*.rc) DO (
    SET "fname=%%a" 
    SET "folder=!fname:~0,8!" 
    SET "$!folder!=1" 
) 

FOR /f "delims=$=" %%a IN ('set "$"') DO (
    ECHO MD "%targetfolder%\%%a" 2>nul 
    ECHO ROBOCOPY "%sourcefolder%" "%targetfolder%\%%a" "%%a*.rc" 
) 

設置sourcefoldertargetfolder您的文件夾樹。

+0

Endoro感謝您的回覆我剛剛證明你的代碼,但它不工作,我不太瞭解批處理腳本synsax等等,我只是改變了sourcefolder和targer文件夾的路徑,如果你能解釋我是如何代碼有效。主要是這個「$!文件夾!= 1」爲什麼! !,對不起,我的知識水平低, – Miguel

相關問題