Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于循环的Windows bat脚本(如果子字符串为字符串)_Windows_Batch File_Cmd - Fatal编程技术网

用于循环的Windows bat脚本(如果子字符串为字符串)

用于循环的Windows bat脚本(如果子字符串为字符串),windows,batch-file,cmd,Windows,Batch File,Cmd,我试图修改文件列表上的for循环,并在其中添加检查文件名中是否存在子字符串: for/r%%i in(*)do echo%%i 如何修改上面的windows bat脚本以检查文件名中是否存在子字符串?我相信您正在查找以下内容: for /r %i in (*sub_string*) do echo %i 或者,如果您使用的是批处理文件: for /r %%i in (*sub_string*) do echo %%i 以下是我的目录结构: 运行以下命令的输出: for /r %i in (

我试图修改文件列表上的for循环,并在其中添加检查文件名中是否存在子字符串:

for/r%%i in(*)do echo%%i


如何修改上面的windows bat脚本以检查文件名中是否存在子字符串?

我相信您正在查找以下内容:

for /r %i in (*sub_string*) do echo %i
或者,如果您使用的是批处理文件:

for /r %%i in (*sub_string*) do echo %%i
以下是我的目录结构:

运行以下命令的输出:

for /r %i in (*test*) do echo %i
详情如下:

C:\Users\czimmerman\Development\CMDTest>for /r %i in (*test*) do echo %i

C:\Users\czimmerman\Development\CMDTest>echo C:\Users\czimmerman\Development\CMD
Test\test1.txt
C:\Users\czimmerman\Development\CMDTest\test1.txt

C:\Users\czimmerman\Development\CMDTest>echo C:\Users\czimmerman\Development\CMD
Test\test2.txt
C:\Users\czimmerman\Development\CMDTest\test2.txt

C:\Users\czimmerman\Development\CMDTest>

请注意,没有列出任何
notthisone.txt

我相信您正在查找以下内容:

for /r %i in (*sub_string*) do echo %i
或者,如果您使用的是批处理文件:

for /r %%i in (*sub_string*) do echo %%i
以下是我的目录结构:

运行以下命令的输出:

for /r %i in (*test*) do echo %i
详情如下:

C:\Users\czimmerman\Development\CMDTest>for /r %i in (*test*) do echo %i

C:\Users\czimmerman\Development\CMDTest>echo C:\Users\czimmerman\Development\CMD
Test\test1.txt
C:\Users\czimmerman\Development\CMDTest\test1.txt

C:\Users\czimmerman\Development\CMDTest>echo C:\Users\czimmerman\Development\CMD
Test\test2.txt
C:\Users\czimmerman\Development\CMDTest\test2.txt

C:\Users\czimmerman\Development\CMDTest>

请注意,没有列出
notthisone.txt

一种方法是使用字符串替换(查看或了解更多详细信息)
因为它发生在
for
循环中,所以必须考虑延迟扩展()

例如,以下代码过滤包含“文本”的文件名,并丢弃其余文件名(找到的每个文件名都打印在开头)

代码.bat:

@echo关闭
延迟扩展
对于(*)中的/r%%f,请执行以下操作(
找到回显:%%f
设置当前文件=%%f
如果不是“!\u当前\u文件:文本=!”=“!\u当前\u文件!”(
回声过滤:当前文件!
)
)
输出


一种方法是使用字符串替换(检查或获取更多详细信息)
因为它发生在
for
循环中,所以必须考虑延迟扩展()

例如,以下代码过滤包含“文本”的文件名,并丢弃其余文件名(找到的每个文件名都打印在开头)

代码.bat:

@echo关闭
延迟扩展
对于(*)中的/r%%f,请执行以下操作(
找到回显:%%f
设置当前文件=%%f
如果不是“!\u当前\u文件:文本=!”=“!\u当前\u文件!”(
回声过滤:当前文件!
)
)
输出