[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 aloha20200628 于 2024-6-10 22:35 编辑

回复 1# cckkaa888

给一个直接用递归方法 ‘截取文件名第一个多字母字段’ 的版本
以下代码存为 test.bat 置于目标文件(*.txt)所在目录下运行...
  1. @echo off
  2. for /f "delims=" %%a in ('dir /b/a-d *.txt') do (
  3. set "s=%%a"&set "$a=%%a" &setlocal enabledelayedexpansion
  4. set "_s="&set "_k=" & (call :getstr)
  5. md "!_s!" 2>nul & move /y "!$a!" "!_s!\" & endlocal
  6. )
  7. pause&exit/b
  8. :getstr
  9. set "c=!s:~,1!" &if "!c!" geq "a" if "!c!" leq "Z" (
  10. set "s=!s:~1!"&set "_s=!_s!!c!"&set/a "_k+=1" & goto :getstr)
  11. if !_k! geq 2 (exit/b) else (set "s=!s:~1!"&set "_s="&set "_k=" & goto :getstr)
  12. exit/b
复制代码

TOP

本帖最后由 aloha20200628 于 2024-6-12 15:17 编辑


凡是提供正则匹配替换方法的脚本(如jscript/vbs/powershell/python/...)均可增援纯P代码以便其整个脚本代码轻量化...
以下代码调用jscript正则替换方法,存为test.bat,置于目标文件(*.txt)所在目录下运行...
  1. @set @x=1 /* &@echo off
  2. for /f "delims=" %%a in ('dir /b/a-d *.txt') do for /f "delims=" %%d in (
  3. ' cscript /nologo /e:jscript "%~f0" "%%a" ') do (md "%%d" 2>nul & move /y "%%a" "%%d\")
  4. pause&exit/b */
  5. v = WSH.arguments; WSH.echo(v(0).match(/[a-z]{2,}/i)[0]); WSH.quit();
复制代码

TOP

返回列表