2015-01-16 99 views
0
移動文件

有文件夾結構是這樣的:附加文件夾名稱爲文件名並使用DOS批處理

rootfolder\subfolder1\file1.txt 
rootfolder\subfolder1\fileA.txt 
rootfolder\subfolderX\file2.txt 
rootfolder\subfolderX\fileC.txt 

需要附加的文件夾名的文件名,包括當前日期時間。然後將重命名的文件移動到根文件夾,如下所示:

rootfolder\subfolder1_file1_<datetime>.txt 
rootfolder\subfolder1_fileA_<datetime>.txt 
rootfolder\subfolderX_file2_<datetime>.txt 
rootfolder\subfolderX_fileC_<datetime>.txt 

有沒有人知道腳本可以做到這一點?非常感謝!

+0

這樣的東西是我喜歡cygwin的原因。一旦你去bash - 你永遠不會回去 – terary

回答

0
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
SET "datetime=%date:/=-%%time::=.%" 
PUSHD "%sourcedir%" 
FOR /f "delims=" %%a IN (
    'dir /b /ad "%sourcedir%\*"' 
) DO (
FOR /f "delims=" %%d IN ('dir /b/a-d ".\%%a\*.txt" 2^>nul') DO (
    ECHO(move "%sourcedir%\%%a\%%d" "%sourcedir%\%%a_%%~nd_%datetime%%%~xd" 
) 
) 
popd 

GOTO :EOF 

您需要更改sourcedir的設置以適合您的情況。

我選擇了簡單篩選.txt文件 - 調整文件掩碼以適合。

我不知道你的日期格式或你期望的日期格式。您尚未說明是否要插入日期/時間current或日期/時間file's。假設爲current

所需的MOVE命令僅爲ECHO用於測試目的。 確認命令正確後,將ECHO(MOVE更改爲MOVE以實際移動文件。追加>nul來抑制報告消息(例如,1 file moved

+0

感謝它運作良好。對於當前時間,我使用SET「datetime =%date:〜10,4 %% date:〜4,2 %% date:〜7,2%_%time:〜0.2 %% time:〜3.2% %時間:〜6.2%」 – nvarchar

相關問題