File Dir/b加上“/&引用;作为文件夹中的最后一个字符

File Dir/b加上“/&引用;作为文件夹中的最后一个字符,file,batch-file,directory,dir,File,Batch File,Directory,Dir,我用 以获取我当前目录中所有文件和文件夹的列表 有没有办法做到: 如果是文件,则为普通文件名,例如blablabla.txt 如果是文件夹,则在结尾处加“/”,例如myfolder\ ? 谢谢。列出以“txt”结尾的文件 仅列出目录: dir /b *.txt > test.txt 列出以“txt”结尾的文件的步骤 仅列出目录: dir /b *.txt > test.txt 分两步做可能是最简单的。一个命令用于附加了\的文件夹,另一个命令用于文件 dir /ad /b 如

我用

以获取我当前目录中所有文件和文件夹的列表

有没有办法做到:

  • 如果是文件,则为普通文件名,例如
    blablabla.txt

  • 如果是文件夹,则在结尾处加“/”,例如
    myfolder\

?


谢谢。

列出以“txt”结尾的文件

仅列出目录:

dir /b *.txt > test.txt

列出以“txt”结尾的文件的步骤

仅列出目录:

dir /b *.txt > test.txt

分两步做可能是最简单的。一个命令用于附加了
\
的文件夹,另一个命令用于文件

dir /ad /b

如果在批处理文件中使用,则将百分比加倍。

分两步操作可能是最简单的。一个命令用于附加了
\
的文件夹,另一个命令用于文件

dir /ad /b
for /d %F in (*) do @(echo %F\)>test.txt
for %F in (*) do @(echo %F)>>test.txt
如果在批处理文件中使用,则将百分比加倍

for /d %F in (*) do @(echo %F\)>test.txt
for %F in (*) do @(echo %F)>>test.txt
显示了三种方法

第一个非常慢-在我的测试目录上运行大约35秒,其中包含1976个文件和333个目录

第二个使用了第二个,但无法正确处理包含
的名称

第三个更复杂,但在大约6秒内产生了与第一个相同的结果

显示了三种方法

第一个非常慢-在我的测试目录上运行大约35秒,其中包含1976个文件和333个目录

第二个使用了第二个,但无法正确处理包含
的名称


第三个更复杂,但在大约6秒钟内产生了与第一个相同的结果。

这是您要求的。文件夹最后有\个,文件没有

@ECHO OFF
:: method 1
SETLOCAL
ECHO %TIME%
(
FOR /f "delims=" %%i IN ('dir /b') DO (
 ECHO %%~ai|FIND "d" >NUL
 IF ERRORLEVEL 1 (ECHO(%%i) ELSE (ECHO(%%i\)
)
)>u:\file1.txt
endlocal
ECHO %TIME%

:: method 2
SETLOCAL ENABLEDELAYEDEXPANSION
(
FOR /f "delims=" %%i IN ('dir /b') DO (
 SET notdir=%%~ai
 if "!notdir:~0,1!"=="d" (ECHO(%%i\) ELSE (ECHO(%%i)
)
)>U:\file2.txt
endlocal
ECHO %TIME%

:: method 3
SETLOCAL
(
FOR /f "delims=" %%i IN ('dir /b') DO (
 SET notdir=%%~ai&CALL :isitadir
 if DEFINED notdir (ECHO(%%i) ELSE (ECHO(%%i\)
)
)>U:\file3.txt
endlocal
ECHO %TIME%
FC u:\file1.txt u:\file2.txt
FC u:\file1.txt u:\file3.txt
GOTO :eof

:isitadir
IF %notdir:~0,1%==d SET "notdir="
GOTO :eof

这是你要的。文件夹最后有\个,文件没有

@ECHO OFF
:: method 1
SETLOCAL
ECHO %TIME%
(
FOR /f "delims=" %%i IN ('dir /b') DO (
 ECHO %%~ai|FIND "d" >NUL
 IF ERRORLEVEL 1 (ECHO(%%i) ELSE (ECHO(%%i\)
)
)>u:\file1.txt
endlocal
ECHO %TIME%

:: method 2
SETLOCAL ENABLEDELAYEDEXPANSION
(
FOR /f "delims=" %%i IN ('dir /b') DO (
 SET notdir=%%~ai
 if "!notdir:~0,1!"=="d" (ECHO(%%i\) ELSE (ECHO(%%i)
)
)>U:\file2.txt
endlocal
ECHO %TIME%

:: method 3
SETLOCAL
(
FOR /f "delims=" %%i IN ('dir /b') DO (
 SET notdir=%%~ai&CALL :isitadir
 if DEFINED notdir (ECHO(%%i) ELSE (ECHO(%%i\)
)
)>U:\file3.txt
endlocal
ECHO %TIME%
FC u:\file1.txt u:\file2.txt
FC u:\file1.txt u:\file3.txt
GOTO :eof

:isitadir
IF %notdir:~0,1%==d SET "notdir="
GOTO :eof