如何使用Windows批處理命名文件夾中的所有文件? 基本上,從_Done
起名字的部分應被刪除:重命名文件夾中的所有文件
some_file_name_Done_34534576456.CSV
- >some_file_name.CSV
some_other_file_name_Done_23232343.CSV
- >some_other_file_name.CSV
如何使用Windows批處理命名文件夾中的所有文件? 基本上,從_Done
起名字的部分應被刪除:重命名文件夾中的所有文件
some_file_name_Done_34534576456.CSV
- >some_file_name.CSV
some_other_file_name_Done_23232343.CSV
- >some_other_file_name.CSV
試試這個,解決方案批次:
@echo off &setlocal enabledelayedexpansion
FOR %%i in (*.*) do call:process "%%~i"
GOTO :eof
:process
set "fname=%~n1"
set "tname=%fname:*_Done=%"
if "%fname%"=="%tname%" echo %~1: nothing to do&goto :eof
set "fname=!fname:_Done%tname%=!%~x1"
if exist "%fname%" echo %fname%: already exists&goto :eof
ren "%~1" "%fname%"
goto :eof
endlocal
編輯:改變了一些!
到%
澄清。這不會改變效果。
太棒了!謝謝! – Peter17 2013-03-20 13:42:23
如果你不介意使用另一種語言,你可以用正則表達式重命名。這是你在JScript中所要求的。將其另存爲something.js,將其放入包含CSV文件的目錄中,並使用cscript /nologo something.js
運行它。
var fso = new ActiveXObject("Scripting.FileSystemObject");
var folder = fso.GetFolder(".");
var files = new Enumerator(folder.Files);
while (!files.atEnd()) {
var file = '' + files.item();
if (/\.csv$/i.test(file)) {
var dest = file.replace(/_Done[^\.]+/i, '');
if (dest != file) {
WSH.Echo('Renaming ' + file + ' -> ' + dest);
files.item().Move(dest);
}
}
files.moveNext();
}
謝謝,會檢查出來 – Peter17 2013-03-20 13:30:04
您可能會發現[Bulk Rename Here](http://www.bulkrenameutility.co.uk/Download.php)更直觀。 – 2013-03-20 12:49:52
不幸的是,我無法使用第三方應用程序。 – Peter17 2013-03-20 12:53:55