[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 pcl_test 于 2017-3-19 23:37 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set "seekdir=d:\ftptemp\iocm-tmp"                     
  3. set "tagtdir=d:\ftptemp\iocm-acl"                     
  4. set "backdir=d:\ftptemp\iocm-rcv"
  5. rem 获取10位时间戳
  6. for /f %%a in ('mshta "javascript:new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Date.parse(new Date()).toString().substr(0,10));close();"') do set tstr=%%a
  7. rem 初始化数字序号
  8. set n=0
  9. rem 遍历seekdir目录里的文件
  10. for /f "delims=" %%a in ('dir /a-d /b "%seekdir%\"') do (
  11.     rem 时间戳和数字序号相拼接
  12.     set aa=%tstr%!n!
  13.     rem 查找文件中是否存在指定字符串,使用&&和||进行逻辑判断,copy是复制重命名,move是移动重命名
  14.     findstr "+ACL" "%seekdir%\%%a">nul&&(
  15.         rem 存在指定字符串
  16.         copy "%seekdir%\%%a" "%tagtdir%\e!aa!.acl.txt"
  17.     )||(
  18.         rem 不存在指定字符串
  19.         copy "%seekdir%\%%a" "%backdir%\e!aa!.acl.txt"
  20.     )
  21.     rem 数字序号自增一
  22.     set /a n+=1
  23. )
  24. rem 获取标准日期
  25. for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value ^| findstr "="') do set "strDate=%%a"
  26. rem 截取格式化日期
  27. set today=%strDate:~0,4%%strDate:~4,2%%strDate:~6,2%
  28. rem 判断指定路径当前日期的文件夹是否存在
  29. set "指定路径=D:\test"
  30. if exist "%指定路径%\%today%\" (echo;Directory already exists!) else md "%指定路径%\%today%\"
  31. pause
复制代码

TOP

回复 3# 41348934

[0-z]不知你是要匹配什么,如果是匹配开头是数字字母的文件,应该是/^[0-9a-z]/i
已加注释

TOP

回复 6# 41348934
for /f "delims=" %%a in ('dir /a-d /b "%seekdir%\"^|findstr /i "^[0-9a-z]"') do (

TOP

回复 9# 41348934
  1. for /f "delims=" %%a in ('dir /a-d /b "%seekdir%\"^|findstr /i "^e"') do (
  2.     set "name=%%~na"&set "首字母=!name:~,1!"
  3.     for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  4.         set "首字母=!首字母:%%i=%%i!"
  5.     )
  6.     move "%seekdir%\%%a" "%tagtdir%\!首字母!!name:~1!%%~xa"
  7. )
复制代码

TOP

测试没有问题,首行有setlocal enabledelayedexpansion吗?另外你的findstr /i "^[Ee]"是不分大小写,只要e开头是findstr  "^e"
另外如果只是替换一个字母,可以这样
  1. for /f "delims=" %%a in ('dir /a-d /b "%seekdir%\"^|findstr "^e"') do (
  2.     set "name=%%a"
  3.     set "name=E!name:~1!"
  4.     echo;%%a --^> !name!
  5.     ren  "%seekdir%\%%a" "%seekdir%\!name!"
  6. )
复制代码

TOP

返回列表