创建空文件
三个方法
copy /y nul empty.txt
每个文件夹下面都有一个特殊的始终为空的nul文件(类似linux的/dev/nul), /y 是不经确认覆盖empty.txt,但是会 "已复制 1 个文件。"的打印echo. 2>empty.txt
执行命令时将错误码写入empty.txt,没有错误当然为空文件了type nul > empty.txt
推荐这个命令,简洁明了
延迟1s
timeout /T 1 /nobreak
获取当前脚本路径的盘符以及当前工作目录的盘符
获取两个盘符后,可以切换到脚本所在盘符,创建相关文件,再切换回工作盘符
::脚本所在的盘符
set file_dir_driver=%~d0
::当前工作目录所在的盘符
set cur_dir_dirver=%cd:~,2%
判断某个文件或者目录是否存在
使用 exist 判断 文件或目录存在
使用 not exist 判断文件或目录不存在
if exist %file% (
echo %file% exist
) else (
echo not exist
)
if not exist %path% (
echo %path% not exist
)
遍历目录下的所有文件或者特定文件
# 递归遍历 INPUT 目录下的所有文件
for /r %INPUT% %%i in (*) do (
echo file=%%i
)
# 递归遍历INPUT 目录下,以 .jpg 或 .png 结尾的图片,
for /r %INPUT% %%i in (*.jpg *.png) do (
echo file=%%i
)
# 对目录中的文件做操作, 需要使能延迟遍历,且用!!来引用变量
# 注意 % 引用变量发生在执行前, 故for循环中如果操作变量,仍然使用"%"引用变量,会获得最后一次的变量
# 为了解决这个问题,需要声明 delay expansion, 运行时扩展变量,且使用 "!"来引用其变量
setlocal EnableDelayedExpansion
for /r %INPUT% %%i in (*.jpg *.png) do (
set file=%%i
echo file:!file!
)
# 递归遍历INPUT 目录下,以 .jpg 或 .png 结尾的图片, 只打印INPUT目录之后的文件信息
for /r %INPUT% %%i in (*.jpg *.png) do (
set file=%%i
set part_file=!file:%INPUT%=!
echo part_file:!part_file!
)
批量处理目录下的每一个文件
@echo off
setlocal EnableDelayedExpansion
set DIR=%~dp0
set INPUT=%DIR%input
set OUTPUT=%DIR%output
for /r %INPUT% %%i in (*.jpg *.png) do (
set filename=%%~nxi
set input_dir=%%~dpi
set output_dir=%OUTPUT%\!input_dir:%INPUT%\=!
if not exist !output_dir! (
mkdir !output_dir!
)
# 将 INPUT目录下的每一个 jpg/png 文件, 处理后放到 OUTPUT目录下
# do sth, convert %%i to !output_dir!\!filename!
)