Batch file 列出不以开头的目录
我想回显所有不以Batch file 列出不以开头的目录,batch-file,cmd,Batch File,Cmd,我想回显所有不以字母开头的目录。我写了以下代码片段 @echo off for /d %%g in (*) do ( echo %%~nxg ) 它会打印出所有的目录。我应该如何过滤掉那些以a开头的?我正在尝试使用IF语句执行某些操作,但失败得很惨。要使用IF执行此操作,请尝试以下操作: @ECHO OFF SetLocal EnableDelayedExpansion FOR /D %%g IN (*) DO ( SET tmp=%%~nxg IF NOT "!tm
字母开头的目录。我写了以下代码片段
@echo off
for /d %%g in (*) do (
echo %%~nxg
)
它会打印出所有的目录。我应该如何过滤掉那些以a开头的
?我正在尝试使用IF语句执行某些操作,但失败得很惨。要使用IF
执行此操作,请尝试以下操作:
@ECHO OFF
SetLocal EnableDelayedExpansion
FOR /D %%g IN (*) DO (
SET tmp=%%~nxg
IF NOT "!tmp:~0,1!"=="a" (
ECHO %%~nxg
)
)
输出过滤
dir/ad/b | findstr/i/v/b“a”
列出目录(/ad
)并将(|
)命令的输出导入到findstr
,这将选择在开头(/b
)不包含字符串“a”
,不区分大小写(/i
)的行
子字符串
@echo关闭
setlocal enableextensions enabledelayedexpansion
对于(*)中的/d%%a,请执行以下操作(
设置“名称=%%~na”
如果/i不是“!name:~0,1!”==“a”echo%%a
)
for
可替换参数不允许使用子字符串操作,因此需要一个变量。但是,由于变量在一个代码块(括号中的代码)内发生了更改,并且在解析该块时(而不是在执行时)完成了正常的变量扩展,因此需要延迟扩展来从更改的变量中检索(读取)值
此代码的问题是,当文件夹名称包含时,它将失败代码>因为解析器将在set
命令中使用它。要处理它,应在需要时启用/禁用延迟扩展
@echo关闭
setlocal enableextensions disabledelayedexpansion
对于(*)中的/d%%a,请执行以下操作(
设置“名称=%%~na”
延迟扩展
对于(“!name:~0,1!”)中的%%b,请执行以下操作(
端部
如果/i不是“%%~b”==“a”回显%%a
)
)
字符删除
@echo关闭
setlocal enableextensions disabledelayedexpansion
对于(*)中的/d%%a,请执行以下操作(
对于/f“代币=*delims=aA”%%b in(“a%%a”)do(
如果/i“%%~b”=“%%~a”回显%%a
)
)
这里使用了/f
的,配置为将字母aA
视为分隔符,但检索所有令牌。这将使/f的从行首删除所有分隔符(aA
)。如果剩余数据等于初始数据,则文件夹的名称不会以a
或a
开头,我会尽快接受它(时间限制,嗯?),但这对我来说是新的SetLocal EnableDelayedExpansion
非常有用的功能。
for /d %%g in (*) do (
for /f "eol=a tokens=* delims=" %%# in ("%%~nxg") do echo %%~fg
)