我试图将循环文件的名称提取为字符串。组织不同文件夹中的许多软件输出,由当前进程文件命名。
到目前为止我得到了这个,但我无法获得变量上的字符串:
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
答案 0 :(得分:1)
快来看看:
@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
答案 1 :(得分:0)
这应该可以解决问题
for %%a in ("%pathToFile%") do set "newvariable=%%~na"