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

这是一个不使用 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
于 2012-06-29T18:21:30.017 回答
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 回答