提取变量的一部分

时间:2018-04-24 21:17:22

标签: string batch-file variables cmd

我试图将循环文件的名称提取为字符串。组织不同文件夹中的许多软件输出,由当前进程文件命名。

到目前为止我得到了这个,但我无法获得变量上的字符串:

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

2 个答案:

答案 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"