我有數百個文件與名稱替換前綴和後綴使用批處理
MUZ-123456-KH.txt
我想更換PREFIX和後綴來代替這種類型的文件名
muz123456.txt
的意思是: 前綴MUZ-是MUZ
後綴-KH替換被替換沒有
我有一個工具,它需要大量的時間。誰能幫我?
其日常工作和我厭倦了
我有數百個文件與名稱替換前綴和後綴使用批處理
MUZ-123456-KH.txt
我想更換PREFIX和後綴來代替這種類型的文件名
muz123456.txt
的意思是: 前綴MUZ-是MUZ
後綴-KH替換被替換沒有
我有一個工具,它需要大量的時間。誰能幫我?
其日常工作和我厭倦了
您可以使用匹配的文件模式(與DIR
命令)和文本替換(與SET
命令)的組合做到這一點。
我添加了註釋來解釋每個步驟正在做什麼。
@ECHO OFF
SETLOCAL EnableExtensions EnableDelayedExpansion
REM Process all files matching the pattern.
FOR /F "usebackq tokens=* delims=" %%A IN (`DIR /B /S "C:\Path\To\Files\MUZ-*-KH.txt"`) DO (
ECHO Processing: %%~A
REM Get just the file name.
SET NewName=%%~nxA
REM Replace prefix.
SET NewName=!NewName:MUZ-=muz!
REM Replace suffix.
SET NewName=!NewName:-KH=!
ECHO Renaming to: !NewName!
REM Rename the file.
RENAME "%%~fnxA" "!NewName!"
ECHO.
)
ENDLOCAL
謝謝大家 – muzaffar 2014-12-28 05:28:03
在假設文件遵循以下格式:
prefix dash datawithnodash dash suffix . txt
@echo off
setlocal enableextensions disabledelayedexpansion
set "prefix=MUZ"
set "suffix=KH"
set "extension=txt"
pushd "c:\where\theFilesAre" && (
for /f "tokens=1,2 delims=-" %%a in ('
dir /b /a-d /l "%prefix%-*-%suffix%.%extension%"
') do ren "%prefix%-%%b-%suffix%.%extension%" "%%a%%b.%extension%"
popd
)
這將使用破折號作爲分隔符的文件名的元素分開,僅檢索前綴和有效數據,放棄其餘的。使用dir
命令檢索文件列表,以小寫形式請求以適應前綴大小寫。
如果您瞭解正則表達式,那麼它很簡單,使用JREN.BAT - a hybrid JScript/batch utility that renames files via regular expression search and replace. JREN.BAT是純粹的腳本,可以從任何Windows XP機器上運行本機上運行。
正則表達式允許指定非常精確的重命名規則。
下一個襯裏查找:
它保留了前綴和編號和擴展,使得整個事情小寫
jren "^([^-]+)-(\d+)-[^-]+(\.txt)$" "lc($1+$2+$3)" /i /j
約你要解決這個問題更清楚。你想重命名文件系統中的文件還是在包含名稱列表的文本文件中更改它們的名稱。你在做什麼系統?文件是在一個目錄還是許多不同的目錄中。 etc .. – 2014-12-27 19:23:58
所有這些.txt文件只能放在一個目錄中(名稱:Muzaffar)。我只想替換文件名,因爲我提到在上面的查詢 – muzaffar 2014-12-27 19:39:04
可能重複[替換文件名在同一目錄根據項目要求](http://stackoverflow.com/questions/27674887/replace-filename-in-same-directory -according-to-project-requirement) – DavidPostill 2014-12-28 12:34:22