批处理如何去除文件名里固定日期格式xxxx_xx_xx_,只保留文字?

如题,想要用批处理来生成文件夹下的文件名并输出到LIST.txt文件里(过滤.bat文件),但是写来写去还是不太懂要怎么搞。
因为一直无法达到要求就打算曲线救国,结果曲线也不成功,以下是曲线代码= =

文件夹里的文件

1.bat
2023_09_09_测试啊.docx
测试什么呢.pdf

LIST.txt最终期望输出效果

测试啊
测试什么呢
@echo off
setlocal EnableDelayedExpansion

set "outputFile=LIST.txt"

:: 清空输出文件,确保没有旧数据
type nul > "%outputFile%"
   
      for /f "tokens=1-5 delims=_." %%i in ('dir /b /o:d') do (
    if not "%%j"=="txt" (
        if not "%%j"=="bat"(
               echo %%i %%l  >> %outputFile%
    )
    )
         
)
::pause>nul
endlocal
阅读 539
2 个回答

如果你使用 Windows 7 及以上,可以考虑使用 powershell,而不是 bat(批处理)。

将下面的代码保存为后缀为 .ps1 的文件即可。

Get-ChildItem | Where-Object { $_.Extension -ne '.bat' } | ForEach-Object { 
    $_.BaseName -replace '^\d{4}_\d{2}_\d{2}_', ''
} | Out-File -FilePath "all.txt" -Encoding UTF8
新手上路,请多包涵

这种东西说实话,当下可能询问gpt,可以更快速地解决问题吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏