簡體   English   中英

如何使用Windows批處理文件腳本重命名多個文件

[英]How to rename multiple files using a windows batch file script

我已經並將擁有名為“ x_1.txt x_2.txt x_3.txt,...”的文件,在我輸入這些文件的其他程序中,我無法識別該順序,因此其排序方式如下:“ x_1.txt,x_101.txt, x_2.txt”)。 一種解決方案是將文件重命名為x00001.txt,x00002.txt,...。到目前為止,我已經在下面編寫了.bat文件,但是我遇到了兩個問題,如果您能幫助我解決它們,我將非常高興:

1-如何從字符串x_'number'.txt中刪除'number'.txt

2-(已解決)如何使用此字符串的變量來重命名文件名(此文件的重命名部分不起作用!)

cls
setlocal enabledelayedexpansion
set /A count=100000
for %%f in (*.txt) do (
   set /a count+=1
   set str=!count:~1!
   echo !str!
   echo %%f
   set filename=%%f
   set filename=!filename:~0,5! /Comment: here I want to just keep the x_ part which I don't know how"
   echo !filename!
   set str3=!filname!!str! 
   echo !str3!
   /// ren %%f !str3!.txt  /Comment: Here I cannot use the variable str3,
   call:renamer %%f !str3!
 )

 :renamer
 ren %1 %2.txt

提前致謝

如果滿足以下條件:

  • 您想重命名當前文件夾中的所有.txt文件
  • 所有.txt文件的名稱中恰好在數字前都有一個_
  • 您的文件名都不包含!

然后以下將工作

@echo off
setlocal enableDelayedExpansion
for %%F in (*.txt) do for /f "tokens=1,2 delims=_." %%A in ("%%F") do (
  set num=0000%%B
  ren "%%F" "%%A!num:~-5!.txt"
)

但是要消除這些條件,則需要更復雜的代碼。

這是一個可靠的解決方案,應該正確重命名符合模板的所有文件。

  • 它允許在名稱中使用多個_
  • 它僅重命名以_NNN.txt結尾的文件,其中NNN是數字
  • 它處理正確! 在文件名中。

請注意,它將不能正確處理超過99999的數字。擴展0填充的程度很簡單。

@echo off
setlocal disableDelayedExpansion
pushd .
subst #: .
#:
for /f "eol=: delims=" %%F in ('dir /b /a-d *.txt^|findstr /er "_[0-9]*.txt"') do (
  set "name=%%~nF"
  setlocal enableDelayedExpansion
  for /f "eol=: delims=" %%A in ("!name:_=\x!") do (
    endlocal
    set "file=%%F"
    set "name=%%~pA"
    set "num=%%~nA"
    setlocal enableDelayedExpansion
    set "num=0000!num:~1!"
    set "name=!name:~1,-1!"
    ren "!file!" "!name:\x=_!!num:~-5!.txt"
    endlocal
  )
)
popd
subst /d #:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM