返回目录:文件问题
新建批处理bat文件,输入以下内容:
setlocal enabledelayedexpansion
set n=0
rem 取得路径包括了最后一个斜线\
set tempPath=%~dp0
rem 把路径中的最后一个斜线去掉
set tempPath=!tempPath:~,-1!
echo %tempPath%
for %%a in ("!tempPath!") do (
set dirName=%%~na
)
for /f "tokens=1,2 usebackq delims=." %%A in (`dir /o:n /b`) do (
if not "%%~nA"=="%~n0" ( rem 不更改bat文件的名称;
if not "%%B"=="html" ( rem 不更改html文件的名称;
if not "%%A.%%B"=="%%A." ( rem 不更改文件夹的名称;
set /a n=n+1
if !n! lss 10 (
ren "%%A.%%B" "!dirName!0!n!.%%B"
) else (
ren "%%A.%%B" "!dirName!!n!.%%B"
)))))
1 细节说明
1.1 对于代码:set /p name="","="前后不能有空格;
1.2 对于代码:) else (,"else"前后必须有空格;
1.3 对于代码:if !n! lss 10 ( ,此处符号必须是"!",而不是"%";
2 变量扩充
变量要用%x来表示,x可取a-z,A-Z,0-9;%a-z或%A-Z是for语句中的迭代变量;(脚本的for命令处理的对象是文件集\目录集\或文本文件、命令输出的以行为基础的文本;)
%0-9是批处理脚本的参数;
%0代表批处理文件自身;
%~dI 仅将 %I 扩展到一个驱动器号
%~pI 仅将 %I 扩展到一个路径
echo %~dp0 显示当前批处理文件的路径;
%~nI 仅将 %I 扩展到一个文件名;
3 变量延迟
使用变量时是用&,当延迟变量时,用!代替&;
!是%的一个强化版,在for循环中,当一个变量被多次赋值时,%dd%所获取的仅仅是dd第一次被赋予的值,想要刷新dd的值,就必须首先使用命令setlocal enabledelayedexpansion来开启延时变量开关,然后用!dd!来获取dd的值;
4 环境变量扩展
%PATH:~10,5%
会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏移量 10)字符开始的五个字符。如果没有指定长度,则采用默认值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,使用的数字则是环境变量数值长度加上指定的偏移量或长度。
%PATH:~-10%
会提取 PATH 变量的最后十个字符。
%PATH:~0,-2%
会提取 PATH 变量的所有字符,除了最后两个。