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:>yogesh>LDK.bat C:\yogesh app

出力:

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の引数として指定されたフォルダー内のファイルの名前を変更したい

さらに情報が必要な場合はお知らせください。

4

2 に答える 2

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の更新:
スペースを含むファイル名で(私にとって)機能したという小さな証拠:)):

ここに画像の説明を入力

于 2012-06-29T17:57:14.283 に答える
1

これは、CD を使用しないソリューションです。\dir1 変数の間に*.*スペースの代わりに aを入れる必要がありました。名前のスペースから保護するために引用符が必要でした。名前と拡張子だけを取得するには、 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
于 2012-06-29T18:21:30.017 に答える