在批处理中,如何在循环时检查目录名称是否包含子字符串?

时间:2017-03-12 17:59:10

标签: batch-file

我想从当前目录循环到子目录,只显示包含特定字符串的目录(在此示例中为 folder1 ):

@setlocal enableextensions enabledelayedexpansion
@echo off

for /f "tokens=*" %%G in ('dir /b /s /a:d %cd%') do ^
set str1=%%G
if not x%str1:folder1=%==x%str1% echo %%G

endlocal

但是,这个脚本什么都没有显示,但我确实有几个子目录要经过。

感谢您的帮助

斯坦

1 个答案:

答案 0 :(得分:1)

你几乎完成了它:

def new
 @country = Country.find(params[:country_id])
 @enterprise = @country.enterprises.build
end


def create
 @country = Country.find(params[:country_id])
 @enterprise = @country.enterprises.build(params[:enterprise])

if @enterprise.save
  redirect_to country_enterprise_url(@country,@enterprise)
else
  render :action => 'new'
end
end


private
def enterprise_params
  params.require(:enterprise).permit(:param1,:param2,:param3)
end
  • 如果您希望当前目录中的@echo off setlocal EnableExtensions EnableDelayedExpansion for /f "tokens=*" %%G in ('dir /b /s /a:d') do ( set "str1=%%G" if not "!str1:folder1=!" == "!str1!" echo %%G ) endlocal 命令显示文件夹,请使用dir;没有必要包含dir /B /S /A:D部分(与您在命令提示符下键入%cd%的方式相同,但不包括dir
  • dir %cd%命令中,方便的是将变量及其值括在引号中:set;这可以避免任何不可见空间造成的问题。这同样适用于set "str1=%%G"命令中的值。
  • 当修改 内部iffor命令时,值必须通过if进行扩展(这就是!)的目的。
  • EnableDelayedExpansion可替换参数的值仅在%%G内有效。使用括号括起for内的所有命令。