我的目录包含多个级别的文件夹。 我完全不熟悉编写批处理文件,而我正在编写第一个文件。 坚持多年尝试
查找目录中的所有文件,包括子文件夹
获取每个文件的父目录
另存为变量,例如%parent.filename%
我一直在这里搜索: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb490909(v=technet.10)
在Google上,但不幸的是,我被困住了。
所以现在我设法将每个文件的完整路径另存为变量,但是我希望%Folder.FileName%仅返回父目录,而不是完整路径。
这是我在命令提示符下测试过的代码。
For /F %A in ('Dir Linkedin /A-D /s /b /o') do SET Folder.%~nxA=%~pA
编辑
我还看到了this thread
并尝试了以下代码:
FOR /F %A in ('Dir Linkedin /A-D /s /b /o') do ECHO %~nxA %~pA >>Paths.txt
FOR /F "tokens=1,2" %A in (Paths.txt) do SET Parent.%A=%~nB
但是%~nxB
没有返回任何值...我希望它能获取路径的最后一个字符串。
答案 0 :(得分:1)
FOR /F %A in ('Dir Linkedin /A-D /s /b /o') do ECHO %~nxA %~pA. >>Paths.txt
FOR /F "tokens=1,2" %A in (Paths.txt) do SET Parent.%A=%~nB
请注意多余的.
~p
修饰符提供的路径以\
终止,因此向该目录添加.
意味着“目录名本身就像文件名一样”
作为单行命令(在批处理中,由标准palaver装饰)
@ECHO OFF
SETLOCAL
FOR /F %%A in ('Dir test* /A-D /s /b /o') do FOR /F %%S in ("%%~pA.") do SET Parent.%%~nxA=%%~nS
set parent.
GOTO :EOF
我使用文件掩码test*
来更好地适应我的系统。
我无法想象您会自愿重新键入命令,因此显示了批处理文件中使用的格式。
答案 1 :(得分:0)
我建议您将其作为命令提示符中的单个嵌套For
循环来执行,并且不使用任何输出文件:
For /F "Delims=" %A In ('Dir /B/S/A-D "Linkedin" 2^>NUL')Do @For %B In ("%~pA.")Do @Set "Folder.%~nxA=%~nxB"
从批处理文件中,也许可以帮到您
@Echo Off
Rem Remove any existing Folder. variables
For /F "Tokens=1*Delims==" %%A In ('Set Folder. 2^>NUL')Do Set "%%A="
Rem Set the new variables
For /F "Delims=" %%A In ('Dir /B/S/A-D "Linkedin" 2^>NUL')Do For %%B In ("%%~pA.")Do Set "Folder.%%~nxA=%%~nxB"
Rem View any returned variables
Set Folder. 2>NUL&&Pause