我的问题陈述本身很清楚我实际上需要做什么。
目前,这适用于我所在的当前目录中的文件。
for /r %%F in (*) do call set files=%%files%% "%%F"
echo %files% >> ....TargetFolderatargetfile.config
但是我想向上移动两个文件夹,然后在一个文件夹中挖掘,有多个文件夹。我想要所有这些文件夹的名称。
例如,就像这样:
for /r %%F in (....TargetFolder) do call set files=%%files%% "%%F"
echo %files% >> ....TargetFolderatargetfile.config
如果您能告诉我是否可以将它们保存在数组中,或者在 for 循环中逐个打印它们并在每次迭代中执行其他操作,那对我来说将是一个很大的帮助。
这是另一种方式。我很高兴你已经有了解决方案。我会担心将所有目录名称放在一个变量中,因为它可能会变得太长。如果有很多,我会按如下方式单独处理它们,或者将列表写入文件以供以后处理。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "tokens=*" %%d IN ('powershell -NoProfile -Command "Get-ChildItem -Path '....' -Directory | ForEach-Object { $_.FullName }"') DO (
SET "THEDIR=%%~d"
ECHO Do something with "!THEDIR!"
)
如果要最大化神秘符号并减少理解,可以使用别名和最小参数名称。
FOR /F "tokens=*" %%d IN ('powershell -nop "ls -Path '....' -dir | %%{$_.fullname}"') DO (
SET "THEDIR=%%~d"
ECHO Do something with "!THEDIR!"
)
好的,要为for /R
指定当前根目录以外的(绝对或相对(根目录,请执行以下操作,例如:
for /R "....TargetFolder" %%F in (*) do echo %%~F
要获取目录列表而不是文件,请添加/D
选项:
for /D /R "....TargetFolder" %%F in (*) do echo %%~F
要获取纯文件/目录名称,请使用%%~nxF
而不是%%~F
。
要获取位于根目录的直接子目录中的文件,请执行以下操作:
for /D %%D in ("....TargetFolder*") do for %%F in ("%%~D*") do echo %%~F
要获取位于该位置的目录,请执行以下操作:
for /D %%D in ("....TargetFolder*") do for /D %%F in ("%%~D*") do echo %%~F