2012-06-29 20 views
0
@ECHO off 
title Rename Script 
set dir1=%1 
set STR=%2 
set count=1 
:Start 
cls 
echo 1. Rename Files 
echo 2. Quit 
set /p choice=I choose (1,2): 
if %choice%==1 goto rename 
if %choice%==2 exit 
:rename 
cls 
echo Running Rename Script for STR=%STR% 
FOR %%n in (%dir1% *.*) DO (
ren %%n %STR%%%n 
echo %STR%%%n) 
echo done 
pause 

C:>約傑什> LDK.bat C:\約傑什應用追加字符串在DOS語法錯誤文件名字不一定

OUTPUT:

Running Rename Script for STR=app 
The syntax of the command is incorrect. 
appC:\yogesh 
appa3dapi.dll 
appHLTV-Readme.txt 
apphltv.cfg 
appkver.kp 
applanguage.inf 
appLDR.bat 
appMp3dec.asi 
appMss32.dll 
appMssv12.asi 
appMssv29.asi 
appTrackerNET.dll 
The batch file cannot be found. 

C:\yogesh> 

沒有與此腳本幾個問題:

  1. 「該命令的語法不正確。」我不知道腳本中的問題在哪裏。
  2. 如何獲取重命名的文件數量?
  3. 文件被改名成在.bat文件駐留我想在可變DIR1指定的文件夾中的文件重命名爲參數

請讓我知道如果你需要更多的信息的目錄。

+0

將@echo從開始(或「REM」出)關閉,您可以看到正在執行的命令。 – SeanC

回答

1

在這裏你去:

@ECHO off 
title Rename Script 
set /A count=1 
:Start 
cls 
echo 1. Rename Files 
echo 2. Quit 
set /p choice=I choose (1,2): 
if %choice%==1 goto rename 
if %choice%==2 exit 
:rename 
cls 
set /p STR=choose a start-string: 
echo Running Rename Script for STR=%STR% 
FOR %%n in (*.*) DO (
ren "%%n" "%STR%%%n" 
echo "%STR%%%n" 
set /A count+=1) 
echo count %count% 
echo done 
pause 
  1. 我們可以保存當前的路徑OLDDIR,然後更改路徑,一個用戶給了,在腳本結束時,我們會回到OLDDIR使用CD
  2. 您需要設置計數器,/A

更新dbenham:
一個小的證明:)),它的工作(對我來說)與文件名包含空格:

enter image description here

+0

還有一件事請:如何重命名有空間的文件名? – user1491706

+0

對我來說,它與包含空格的文件名一起工作,但如果它不適用於您,請嘗試用「」包裝文件名「」 – alfasin

+0

使用PUSHD/POPD更簡單,而不是將值存儲在var中並使用CD。除非添加引號,否則看不到腳本如何處理包含空格的名稱。 – dbenham

1

這裏是無需使用CD的解決方案。您需要在您的dir1變量和*.*之間放置一個\而不是空格。你需要引號來防止名稱中的空格。使用FOR變量修飾符~nx來獲取名稱和擴展名(刪除任何驅動器和路徑信息)。最後,使用SET/A來執行數學。

@ECHO off 
title Rename Script 
set "dir1=%~1" 
set "STR=%~2" 
set count=1 
:Start 
cls 
echo 1. Rename Files 
echo 2. Quit 
set /p choice=I choose (1,2): 
if %choice%==1 goto rename 
if %choice%==2 exit 
:rename 
cls 
echo Running Rename Script for STR=%STR% 
set cnt=0 
FOR %%F in ("%dir1%\*.*") DO (
    ren "%%F" "%STR%%%~nxF" 
    echo %STR%%%~nxF 
    set /a cnt+=1 
) 
echo %cnt% files were renamed. 
echo done 
pause 
+0

我想將此文件複製到選定的文件夾,然後雙擊此腳本後,應該重命名該文件夾中的所有文件。這是行不通的,我無法得到該文件所在的文件夾的路徑。 – user1491706