我们使用以下命令
批量使用RegexDir "C:\Test\Res345_45664_1335" /s /b /a:-d | findstr /R "[(\d+)_(\d+)_(\d+)]" > filelist.txt
“C:\ Test \ Res345_45664_1335”目录包含以下文件,
Res345_45664_1335.txt
Output.txt
list.txt
我们需要格式为 的文件 但上面的dir命令带有正则表达式,显示“C:\ Test \ Res345_45664_1335”目录中的所有文件。因为“C:\ Test \ Res345_45664_1335”目录包含相同的格式“Res345_45664_1335”。但我们只需要文件(完整路径)。
感谢。
答案 0 :(得分:3)
\d
,()
和+
不是findstr
中的有效元字符。请参阅findstr /?
更高级的帮助。您应该使用[0-9][0-9]*
替换它。
Dir "C:\Test\Res345_45664_1335" /s /b /a:-d | findstr /ER "[0-9][0-9]*_[0-9][0-9]*_[0-9][0-9]*.txt" > filelist.txt
答案 1 :(得分:1)
文件是否有扩展名?
Dir "c:\test\Res345_45664_1335" /s /b /a:-d | findstr /R "[0-9]*_[0-9]*_[0-9]*\."
答案 2 :(得分:0)
试
Dir /s /b /a:-d *_*_*
不确定“格式”是什么意思
啊 - 文件名为string_string_string ...
的文件名FOR /f "delims=" %%i IN ('dir /s /b /a-d *_*_*') DO ECHO "%%~ni"|FINDSTR /r "..*_..*_..*" >nul&IF NOT ERRORLEVEL 1 ECHO %%i
(这是一个批处理行 - 从提示中减少%%
到%
)
答案 3 :(得分:0)
批处理脚本不像编程语言那样具有可行性。一些简单的正则表达式可以与'findstr'一起使用,但是它有一些局限性,例如'+'字符替换为'。*'。但是不用担心,我为您提供解决方案。
您可以简单地在批处理脚本中以及解决方案下方的此处使用power-shell:
@powershell -command "if (($string -match $regex) -eq $true) {write-host matched!}"
它将为您工作,如果您想引发异常,则只需在批处理脚本中引发并断言为:
@powershell -command "if (($string -match $regex) -eq $true) {throw [System.ArgumentException] invalid input}"
我希望这对您和其他可能需要它的人来说足够。