2013-07-23 41 views
1

我有一個批處理腳本位於不同的文件夾。 (\ test remove \)從文件夾中的文件名刪除時間戳字符串

我希望從另一文件夾中的所有.csv文件中刪除14個字符(\ test remove \ remove from here \)它可以在任何位置刪除字符的文件夾(子目錄是一個示例)

  • 小的背景下,14個字符是一個時間戳(YYYYMMDDHHMMSS),希望從.csv檔案來

當我運行我的腳本,它會從所在的文件夾批量字符刪除時間戳腳本位於。

setlocal EnableDelayedExpansion 
set removeFileLocation="C:\...\Desktop\test remove\remove from here\" 

for /r %removeFileLocation% %%x in (*.csv) do (
     set "oldname=%%~Nx" 
     set "newname=!oldname:~,-14!" 
     ren "!oldname!.csv" "!newname!.csv" 
) 

當運行以及我得到「系統找不到指定的文件。」但它仍能成功從.csv文件中刪除字符。

+0

用'ren'%%〜dpx!oldname!.csv「!!newname!.csv」代替'ren!!oldname!.csv「」!newname!.csv「'' –

回答

0

我建議你嘗試

setlocal EnableDelayedExpansion 
set "removeFileLocation=C:\...\Desktop\test remove\remove from here" 

for /f %%x in (' dir/s/b/a-d "%removeFileLocation%\*.csv" ') do (
    set "oldname=%%~Nx" 
    set "newname=!oldname:~,-14!" 
    ECHO ren "%%~dpx!oldname!.csv" "!newname!.csv" 
) 

注: set "removeFileLocation...改變(1),使得"rabbit's ears"包圍整個分配,從而確保後續空格包含在被分配的值。 (2)尾隨\被刪除。 (這是個人選擇的問題)

FOR/F建立在全文件名只(沒有標題)

ren需要的內存DIR列表,以便在文件名的驅動器和路徑恢復。

ren僅僅是ECHO,以確保操作是正確的。刪除ECHO關鍵字以激活重命名。

我相信這是與你原來的版本情況是,for/r是重遇一個已經改名的文件或因爲你沒有指定一個路徑名的文件進行重命名,它的發現在一些子目錄.csv和嘗試在當前目錄中重命名它,但它不存在或已在那裏重命名。

相關問題