我正在尝试将循环中的文件的名称提取为字符串。在不同的文件夹中组织许多软件输出,以当前过程文件命名。
到目前为止我得到了这个,但我无法获得变量上的字符串:
set DirecoryT=%%G
FOR /R D:\LiDAR_Data\LiDAR_DATA_EBA\ %%G in (*.laz) do (
echo Directory %DirecoryT%
set File=%DirecoryT:~29,9%
echo Processing file %File%
pause
)
pause
最佳答案
试一试:
@echo off
for /R "D:\LiDAR_Data\LiDAR_DATA_EBA\" %%G in (*.laz) do (
echo File Extension only: "%%~xG"
echo FileName with Extension: "%%~nxG"
echo FileName without Extension: "%%~nG"
echo Full path and name: "%%G"
echo Directory to file only: "%%~pG"
echo Drive and directory is: "%%~dpG"
)
pause
注意我们如何获取字符串的各个部分。有关变量处理的更多信息,只需从命令行运行 for/?
并阅读帮助。
根据您的尝试,更接近您实际想要的东西。
@echo off
for /R "D:\LiDAR_Data\LiDAR_DATA_EBA\" %%G in (*.laz) do (
echo FileName "%%~nxG"
echo Directory "%%~dpG"
echo Processing file "%%~nxG"
)
pause
编辑
根据您最后的评论,仅查看文件所在的最后一个文件夹:
@echo off
for /R "D:\LiDAR_Data\LiDAR_DATA_EBA\" %%G in (*.laz) do (
echo FileName "%%~nxG"
echo Directory "%%~dpG"
echo Processing file "%%~nxG"
for %%i in ("%%~dpG\.") do echo Last Folder "%%~nxi"
)
pause
关于string - 提取部分变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50010840/