2014-02-28 19 views
0

嘗試了很多方法來做到這一點,但不會給我任何靠近我的需求的地方。我需要一個批處理腳本來從文件名中去掉前導零。

幫助和指導請。

我想要做的是運行批處理文件,以從文件名末尾的頁碼剝離前導零。 (_0101)

文件名= 05-10-2012#MilitaryPkk-#書籍** _ 0101 **。全文

_0101改爲101

輸出我找的是後頁碼變在(連字符) - 新的文件名= 05-10-2012#MilitaryPkk-101#Books.Pdf

輸入文件總是與一個(下劃線)前綴_

所以0101成爲101或090變90,01變成1. 如你所見它將在文件名中爲4,3或2位數字。

這些文件到達文件夾時需要進行更改。

我開始考慮職位數量,但不確定是否最好的方法是有點卡住的建議非常歡迎。

感謝

JH

+1

這確實很難在批處理文件中完成,因爲我相信你會發現。與其創建過於複雜的東西,如何使用PowerShell之類的其他工具,將文件名傳遞給單獨的可執行文件或Perl? –

+0

這樣做可能會導致文件在某些​​工具中出現「亂序」。 –

回答

0

嘗試了這一點:

@echo off 
setlocal enabledelayedexpansion 

for /f "tokens=1-3 delims=#" %%a in ('dir /b /a-d *_0*.pdf') do (
    set orig=%%a#%%b#%%c & set pre=%%a#%%b 
    for /f "tokens=1-3 delims=_." %%d in ("%%c") do (
    set "str=%%d" & set "str2=%%e" & set "str2=!str2:_=!" 
    Call :StripLeading0 !str2! ret 
    set "newfile=!pre!!ret!#!str!.%%f" 
) 
) 
set "filename=!newfile!" 
echo %filename% 
exit /b 

:StripLeading0 <input> <return> 
setlocal 
FOR /F "tokens=* delims=0*" %%A IN ("%1") DO SET Var=%%A 
endlocal & set %2=%Var% 
+0

我剛剛意識到星號在文件名中無效。那麼,文件名中的星號是否代表單個字符?如果是這樣,我將不得不調整這個答案。 –

+0

嗨馬特,星號字符可以被排除在外,事實上我將他們排除在一起只會導致問題。 –

+0

嗨馬特,如果這('dir/b/ad * .pdf')是一個可變的實際文件名集 –

0
@ECHO OFF 
SETLOCAL 
SET "sourcedir=." 

FOR /f "tokens=1*delims=_" %%a IN ('dir /b /a-d "%sourcedir%\*_0*.pdf" ') DO (
FOR /f "tokens=*delims=0" %%e IN ("%%b") DO ECHO REN "%sourcedir%\%%a_%%b" "%%a_%%e" 
) 
) 
GOTO :EOF 

你需要設置你的目錄sourcedir。我設置了當前目錄(.)進行測試。

爲了測試目的,所需的REN命令僅僅是ECHO驗證命令是否正確後,將ECHO REN更改爲REN以實際重命名文件。

0
@echo off 

    setlocal enableextensions disabledelayedexpansion 

    set "folder=%cd%" 

    for %%z in ("%folder%\*_0*.pdf" 
    ) do for /f "tokens=1-3 delims=#" %%a in ("%%~nz" 
    ) do for /f "tokens=1,* delims=_" %%d in ("%%~c" 
    ) do for /f "tokens=* delims=0" %%f in ("%%~e" 
    ) do echo ren "%%~fz" "%%~a#%%~b%%~f#%%~d%%~xz" 

    endlocal 

for循環是:

  • %%z遍歷文件

  • %%a - %%c在文件名中的 「部分」 令牌由#

  • %%d分隔 - %%e通過下劃線分裂文件名的最後一個「節」

  • %%f與0領先的頁數取出

而這一點,當然,假設#是一個分隔符,而下在文件名的最後「部分」中,唯一的下劃線是頁碼的分隔符。在其他條件下,代碼應該適應。

相關問題