在dos语法错误需要中将字符串附加到文件名

时间:2012-06-29 17:26:15

标签: batch-file dos rename

@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 个答案:

答案 0 :(得分: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中保存当前路径,然后将路径更改为用户提供的路径,在脚本结束时我们将使用CD
  2. 返回OLDDIR
  3. 您需要使用/A
  4. 设置计数器

    dbenham更新:
    一个小证明:))它对我来说有用,包含空格的文件名:

    enter image description here

答案 1 :(得分: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