重命名文件中的文本和字符串批处理文件

时间:2014-02-27 13:32:39

标签: batch-file

我有很多文件夹,其中有名字的文件:XXXX_transcoded.j2c

我需要从文件中删除_transcoded.j2c并更新为XXXX.txt

任何人都有任何想法如何做到

到目前为止我的代码

for /r %%i in (*.j2c) do (
call:Set %%~ni
)   

:Set
set currenttext=%*
set currenttext=%currenttext:_transcoded=%
echo %currenttext%
%%~ni.Contract.xml %%i.txt
pause

3 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL
SET "sourcedir=c:\sourcedir"
FOR /f "delims=" %%a IN (
  'dir /s /b /a-d "%sourcedir%\*_transcoded.j2c" '
  ) DO (
  SET "fullname=%%a"
  SET "oldname=%%~nxa"
  CALL :changename
)

GOTO :EOF

:changename
SET "newname=%oldname:_transcoded.j2c=%"
ECHO REN "%fullname%" "%newname%.txt"

GOTO :eof

这对你有用。您必须将目录设置为sourcedir

为了测试目的,所需的REN命令仅为ECHO在您确认命令正确后,将ECHO REN更改为REN以实际重命名文件。

答案 1 :(得分:1)

@echo off
setlocal disableDelayedExpansion
for /f "eol=: delims=" %%F in (
  'dir /s /b /a-d *_transcoded.j2c'
) do (
  set "full=%%F"
  set "name=%%~nxF"
  setlocal enableDelayedExpansion
  ren "!full!" "!name:~0,-15!.txt"
  endlocal
)

答案 2 :(得分:1)

这应该是你所需要的。在一些示例文件上测试它。

@echo off
for /r %%i in (*_transcoded.j2c) do (
for /f "delims=_" %%a in ("%%~nxi") do ren "%%i" "%%a.txt"
)