2014-10-21 50 views
2

我已經做了一些研究,沒有找到很多,我發現我無法工作。這裏有一件我在這裏找到的stackoverflow。 cmd - batch file rename - Stack Overflow批處理文件重命名(刪除時間戳)

我使用大型複印機將文件掃描到網絡驅動器上的文件夾中。我在掃描文件之前命名文件,複印機在文件末尾添加一個時間戳,看起來像「_20141021165008」,我想在文件發送到計算機時刪除時間戳。這些文件被掃描到三個位置之一,我希望他們每個人都做同樣的事情。

這是它看起來像複印機來:

001-Bob_(1-100)_20141021165008 
002-Bob_(1-25)_20141021170515 
1-67676_Ex.Sheets_20141021172043 

,這是我想他們是什麼樣子:

001-Bob_(1-100) 
002-Bob_(1-25) 
1-67676_Ex.Sheets 

而且,姓名和電話號碼更改所有的時間。 我有這樣的文件擴展名不可見。但這些文件的時間.PDF

99.9%,我想這樣做的是:當文件夾中到達

  • 有無時間戳自動刪除。
  • 不會多次重命名一個文件,這樣我就不會丟失任何文件名。

我有一個批處理文件,刪除文件名的最後12個字符,我創建它的快捷方式,並使用鍵盤快捷方式,但它不能在一切工作,沒有完全自動化的,我必須重新設置快捷方式,每隔幾天,因爲它只是停止工作......

運行Win7的臨64倍

謝謝你對任何人有幫助!

回答

2

差不多,但不完全是你所要求的。並且該命令可以根據需要多次運行,而無需更改已重命名文件的名稱。

ren *_*.pdf *_.pdf 

上面的命令將給予你在你的問題中列出的文件,結果如下:

001-Bob_(1-100)_20141021165008.pdf --> 001-Bob_(1-100)_.pdf 
002-Bob_(1-25)_20141021170515.pdf  --> 002-Bob_(1-25)_.pdf 
1-67676_Ex.Sheets_20141021172043.pdf --> 1-67676_Ex.Sheets_.pdf 

爲什麼上面的命令作品的說明,請參見How does the Windows RENAME command interpret wildcards?

+0

「ren」的這種行爲記錄在哪裏? – 2014-10-22 04:29:35

+0

+1。新聞給我,所以我顯然需要審查當前的命令集。 – 2014-10-22 04:31:14

+0

@ Cheersandhth.-Alf - 查看已更新答案中的鏈接。據我所知,這種行爲沒有被MicroSoft正確記錄。我跑了一堆實驗來反向設計行爲。 – dbenham 2014-10-22 12:23:22

0
for /f "tokens=1-3* delims=_" %A in ('dir /b *_*_*.*') do ren "%A_%B_%C%D" "%A_%B%D" 

這將讀取dir命令的輸出。它不適用於具有兩個以上下劃線的文件。如果你需要這樣說的話。在批處理文件中將%A等更改爲%% A。

0
@echo off 

setlocal 
set "target_folder=c:\some_dir" 
pushd "%target_folder%" 2>nul 

rem --Remove comments in case of network drive. 
rem net use h: %target_folder% 
rem pushd h: 

setlocal enableDelayedExpansion 
for %%a in (*_2014*) do (
    set filename=%%~na 
    set newname=!filename:~0,-14! 
    rem --Remove the echo if the new file name is OK 
    echo ren "%%~nxa" "!newname!%%~xa" 

) 
endlocal 
endlocal