【发布时间】:2015-05-03 09:45:17
【问题描述】:
我有一些不同名称的文件。
Leviathan.txt、Dragon.txt等
我想把它变成一个数字开头
1.txt、2.txt、3.txt、4.txt等
如何使用For和可以传递文件夹中文件数量的函数像其他语言一样执行?
到目前为止,我知道的代码是 dir 和 ren。我现在卡住了。
ren *.txt 1.txt
【问题讨论】:
标签: command-line command-prompt
我有一些不同名称的文件。
Leviathan.txt、Dragon.txt等
我想把它变成一个数字开头
1.txt、2.txt、3.txt、4.txt等
如何使用For和可以传递文件夹中文件数量的函数像其他语言一样执行?
到目前为止,我知道的代码是 dir 和 ren。我现在卡住了。
ren *.txt 1.txt
【问题讨论】:
标签: command-line command-prompt
下一个代码 sn-p 可以为您工作(使用 .bat 扩展名保存);请注意,rename 命令仅出于调试目的而回显:
@echo off
SETLOCAL enableextensions enabledelayedexpansion
set /A "ii=0"
pushd "working_directory_here"
for /F "delims=" %%G in ('dir /B /ON "*.txt" 2^>NUL') do (
set /A "ii+=1"
echo ren "%%~G" "!ii!%%~nxG"
)
popd
如果您坚持单行(在正确的工作目录中启动):
cmd /E:ON /V:ON /K (@echo off^&set /A "ii=0" ^>NUL^&for /F "delims=" %G in ('dir /B /ON "*.txt" 2^^^>NUL') do (set /A "ii+=1" ^>nul^&echo ren "%~G" "!ii!%~nxG"))^&exit
资源(必读):
%~G等专页)Command Line arguments (Parameters)
EnableDelayedExpansion)Setlocal EnableDelayedExpansion
^>、%% 等)Syntax : Escape Characters, Delimiters and Quotes 【讨论】:
假设您现有的文件都没有命名为 n.txt 之类的名称,其中 n 是一个数字,然后只需 CD 到您的文件夹,然后从命令行运行以下命令:
for "tokens=1* delims=:" %A in ('dir /b *.txt^|findstr /n "^"') do @ren "%B" "%A.txt"
如果您在批处理脚本中使用该命令,则将百分比加倍。
编辑
我忘记了我的JREN.BAT utility - 一个正则表达式重命名实用程序。它是纯脚本(混合 JScript/batch),可以在 XP 以后的任何 Windows 机器上本地运行。
JREN 具有将数字合并到每个新文件名中的内置功能,并且作为额外的好处,它可以用零填充数字,以便 DIR 命令按数字顺序列出文件。默认数字宽度为 3 位,因此文件将类似于“001.txt”、“002.txt”、...“010.txt”、...“100.txt”等。
jren "^.*" "$n+'.txt'" /j /fm *.txt
/NPAD 选项指定最小数字宽度,因此 NTAB 1 不产生填充,这是原始问题所要求的。
jren "^.*" "$n+'.txt'" /j /fm *.txt /npad 1
由于 JREN 本身就是一个批处理脚本,如果您将命令放在另一个批处理脚本中,则必须使用 CALL JREN。
可通过命令提示符通过jren /? | more 获得完整文档。我的控制台窗口配置了一个大缓冲区,因此我可以向后滚动查看之前的输出,而且我不会费心将帮助传递给 MORE。
【讨论】: