簡體   English   中英

批處理腳本重命名文件前綴

[英]Batch Script Renaming File Prefix

我有一個批處理文件,該文件實際上在一個文件夾中找到所有pdf文件,並為它們提供前綴。 例如: file1.pdffile2.pdf 批處理文件運行時,會為每個文件添加一個前綴,例如“ new”。 New - file1.pdfNew - file2.pdf

我不確定如何獲取它來檢查此文件是否已經包含此前綴,如果為true,則跳過它。 這是我當前的代碼:

set strPrefix=New - 

set fname=*.pdf

for %%f in (%fname%) Do echo Rename file "%%f" to "%strPrefix%%%f"

for %%f in (%fname%) Do ren "%%f" "%strPrefix%%%f"

使用DIR / B列出文件,並將結果通過管道傳遞給FINDSTR,以刪除Aready具有前綴的文件。 使用FOR / F處理結果(而不是簡單的FOR)。

@echo off
setlocal
set "prefix=New - "
set "mask=*.pdf"

for /f "eol=: delims=" %%F in (
  'dir /b "%mask%" ^| findstr /vibc:"%prefix%"'
) do ren "%%F" "%prefix%%%F"

或者,您可以使用我的JREN.BAT正則表達式文件重命名實用程序來簡化操作。 它是純腳本(混合JScript /批處理),可從XP開始在任何Windows計算機上本地運行。 完整的文檔嵌入在腳本中。

以下命令(對於命令行)假定JREN.BAT在PATH內列出的文件夾中。

jren "^" "New - " /fm "*.pdf" /fx "New - *"

如果將命令放在批處理腳本中,請使用CALL JREN。

以下代碼提取文件名的開頭,並將其與預定義的前綴進行比較(不區分大小寫):

set "strPrefix=New - "
set lenPrefix=6
set fname=*.pdf

setlocal EnableDelayedExpansion
for %%F in (%fname%) do (
  set "file=%%~nxF"
  if /i not "!file:~0,6!"=="%strPrefix%" (
    ren "%%~fF" "%strPrefix%%%~nxF"
  )
)
endlocal

變量lenPrefix保留前綴的長度(字符數),因為沒有內置函數可以獲取該前綴。

暫無
暫無

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

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