2014-02-07 45 views
1

我有一個名爲sales的文件夾。我在該文件夾中有imgxy.jpg,imgab.jpg等。當我右鍵單擊銷售文件夾併發送到rename.bat文件(我已經將rename.bat文件複製到c:\ documents and settings \ username \發送到)我希望銷售文件夾中的文件更改爲sales1.jpg,sales2.jpg等。這個行爲應該是我發送給這個.bat文件的任何東西。以下代碼昨晚在Windows 7上正常工作。現在我是Windows XP的SP3,它的工作。它試圖在文件夾中重命名文件* C:\ Documents和Settings \用戶名*使用文件夾名稱和序列號批量重命名文件 - 發送到菜單

請幫助下

@ECHO OFF 
setlocal enabledelayedexpansion 
set foldername=%1 
for %%i in (%bar%) do set bar=%%~ni 
FOR /D %%# in (%bar%) DO (
PUSHD "%%#" 
FOR %%@ in ("*") DO (
    set /a "inc+=1" 
    Echo Ren: ".\%%~n#\%%@" "%%~n#!inc!%%[email protected]" 
    Ren "%%@" "%%~n#!inc!%%[email protected]" 
) 
POPD 
) 
+0

這是實際的腳本嗎?爲什麼有一個'foldername'變量在分配值之後沒有被使用?爲什麼在任何值被分配給它之前,bar變量被引用(在第一個'for'循環中)? 'foldername'和'bar'應該是同一個變量,也許吧? –

+0

喜腳本做其他的東西,對於我已經分配它,張貼我採取了代碼的其餘部分關的便利。文件夾的名稱賦予完整路徑的文件夾,在酒吧只給 – ichayan

+0

我的意思是父文件夾的名稱,應該不是第'for'循環是這樣的:'爲我%%在(%文件夾名稱%)並設置欄=% %〜ni'? –

回答

0

測試此rename.bat文件中的代碼 - 它接受一個文件夾,而不是文件,但你提到了你的問題中的文件夾。

不要把它rename.bat因爲rename是一個內部命令。

@ECHO OFF 
setlocal enabledelayedexpansion 
PUSHD "%~1" 
set inc=0 
FOR /f "delims=" %%a in ('dir /b /a-d') DO (
    set /a inc+=1 
    Echo Ren: "%%a" "%~n1!inc!%%~xa" 
    Ren "%%a" "%~n1!inc!%%~xa" 
) 
POPD 
+0

喜謝謝,重命名使用了象徵性的名字,我嘗試了代碼,並經過重命名週期,並通過其自身的文件名的文件重命名(任志強:「IMG_105511.JPG」「IMG_1055111.JPG」),因此沒有什麼變化,但上面的一個我已經用於Windows 7上的作品7 – ichayan

+0

再看一遍。重命名的文件最後有一個額外的1,這是你要求的。 – foxidrive

+0

是的,我同意,但希望的文件名由它的文件夾名的名字命名。這裏所做的只是爲現有的文件名添加一個序列號。謝謝 – ichayan

相關問題