Batch file 循环浏览包含空间的文件的文件夹
我想循环遍历一个文件夹,让它对找到的每个.tif文件运行一个算法。不幸的是,这不适用于名称中有空格字符的文件。由于我的路径已经包含有空格的文件夹,我将存储路径名的变量放在双引号中Batch file 循环浏览包含空间的文件的文件夹,batch-file,cmd,Batch File,Cmd,我想循环遍历一个文件夹,让它对找到的每个.tif文件运行一个算法。不幸的是,这不适用于名称中有空格字符的文件。由于我的路径已经包含有空格的文件夹,我将存储路径名的变量放在双引号中 FOR /F %%k IN ('DIR /B "%mypath_import%"*.tif') DO ( SET infile=%%k SET outfile=!infile:.tif=_UTM.tif! REM ... do something 到目前为止,这是我的尝试,但对于包含空格的文件
FOR /F %%k IN ('DIR /B "%mypath_import%"*.tif') DO (
SET infile=%%k
SET outfile=!infile:.tif=_UTM.tif!
REM ... do something
到目前为止,这是我的尝试,但对于包含空格的文件来说,它不起作用。您需要所有这些。您可以使用正常的
for
循环,而无需使用/f
@echo off
setlocal enabledelayedexpansion
set "mypath_import=C:\Some path"
for %%i in ("%mypath_import%*.tif") do (
set "infile=%%~i"
echo "!infile:.tif=UTM.tif!"
)
但是,如果您只希望文件名扩展名为:
@echo off
setlocal enabledelayedexpansion
set "mypath_import=C:\Some path"
for %%i in ("%mypath_import%*.tif") do (
set "infile=%%~nxi"
echo "!infile:.tif=UTM.tif!"
)
或者不需要延迟扩展
@echo off
set "mypath_import=C:\Some path"
for %%i in ("%mypath_import%*.tif") do echo %%~dpni_UTM%%~xi
如果您只需要名称和扩展名,请再次输入
@echo off
set "mypath_import=C:\Some path"
for %%i in ("%mypath_import%*.tif") do echo %%~ni_UTM%%~xi
编辑
根据@Stephan的评论,请记住,如果您正在进行实际重命名,并且多次运行脚本,那么每次都会继续追加\u UTM
。因此,您将获得filename\u UTM\u UTM.tif
等。因此,您可以通过包含findstr
从循环中排除文件
for /f "delims=" %%i in ('dir /b *.tif ^|findstr /eiv "_UTM.tif"') do echo %%~ni_UTM%%~xi
你真的需要这些。您可以使用正常的
for
循环,而无需使用/f
@echo off
setlocal enabledelayedexpansion
set "mypath_import=C:\Some path"
for %%i in ("%mypath_import%*.tif") do (
set "infile=%%~i"
echo "!infile:.tif=UTM.tif!"
)
但是,如果您只希望文件名扩展名为:
@echo off
setlocal enabledelayedexpansion
set "mypath_import=C:\Some path"
for %%i in ("%mypath_import%*.tif") do (
set "infile=%%~nxi"
echo "!infile:.tif=UTM.tif!"
)
或者不需要延迟扩展
@echo off
set "mypath_import=C:\Some path"
for %%i in ("%mypath_import%*.tif") do echo %%~dpni_UTM%%~xi
如果您只需要名称和扩展名,请再次输入
@echo off
set "mypath_import=C:\Some path"
for %%i in ("%mypath_import%*.tif") do echo %%~ni_UTM%%~xi
编辑
根据@Stephan的评论,请记住,如果您正在进行实际重命名,并且多次运行脚本,那么每次都会继续追加\u UTM
。因此,您将获得filename\u UTM\u UTM.tif
等。因此,您可以通过包含findstr
从循环中排除文件
for /f "delims=" %%i in ('dir /b *.tif ^|findstr /eiv "_UTM.tif"') do echo %%~ni_UTM%%~xi