Windows 对特定类型的文件运行命令
我目前正试图在某些类型的文件上运行一个程序。下面是我执行以下操作的批处理脚本:Windows 对特定类型的文件运行命令,windows,batch-file,cmd,file-type,Windows,Batch File,Cmd,File Type,我目前正试图在某些类型的文件上运行一个程序。下面是我执行以下操作的批处理脚本: 清除名为“Projections.txt”的文本文件 循环浏览当前目录中的所有文件 如果找到文件类型.prj,请运行程序gdalsrsinfo.exe并将其写入文本文件 代码如下: break>projections.txt for %%a in (*) do ( if exist *.prj ( echo ".prj file found" echo %%a >> projections.txt
break>projections.txt
for %%a in (*) do (
if exist *.prj (
echo ".prj file found"
echo %%a >> projections.txt
"C:\Program Files\GDAL\gdalsrsinfo.exe" -e proj4 %%a >> projections.txt
)
)
我似乎不能只在.prj文件上运行这个程序,它通过“gdalsrsinfo.exe”将目录中的每个文件都放进去
我的问题是如何在.prj文件上运行“gdalsrsinfo.exe”
感谢修复您当前的代码
@echo off
break>projections.txt
for %%a in (*) do (
if "%%~xa" == ".prj" (
echo ".prj file found"
echo %%a >> projections.txt
"C:\Program Files\GDAL\gdalsrsinfo.exe" -e proj4 %%a >>projections.txt
)
)
但是,如果它只是您感兴趣的.prj
文件,而不是任何其他文件,则您可以在for循环中明确筛选它,并消除如果存在的部分
@echo off
break>projections.txt
for %%a in (*.prj) do (
echo ".prj file found"
echo %%a >> projections.txt
"C:\Program Files\GDAL\gdalsrsinfo.exe" -e proj4 %%a >>projections.txt
)
修复当前代码
@echo off
break>projections.txt
for %%a in (*) do (
if "%%~xa" == ".prj" (
echo ".prj file found"
echo %%a >> projections.txt
"C:\Program Files\GDAL\gdalsrsinfo.exe" -e proj4 %%a >>projections.txt
)
)
但是,如果它只是您感兴趣的.prj
文件,而不是任何其他文件,则您可以在for循环中明确筛选它,并消除如果存在的部分
@echo off
break>projections.txt
for %%a in (*.prj) do (
echo ".prj file found"
echo %%a >> projections.txt
"C:\Program Files\GDAL\gdalsrsinfo.exe" -e proj4 %%a >>projections.txt
)
以下方法将更快、更有效
@(For %%G In ("*.prj")Do @(Echo ".prj file found">CON
Echo %%G
"%ProgramFiles%\GDAL\gdalsrsinfo.exe" -e proj4 %%G
))>"projections.txt"
它更快、更高效,因为它不创建输出文件,然后为找到的每个.prj
文件打开、写入和关闭它两次
以更简化的格式:
@Echo关闭
(
对于%%G英寸(“*.prj”)请执行以下操作(
找到Echo“.prj文件”>CON
回声%%G
%ProgramFiles%\GDAL\gdalsrsinfo.exe“-e proj4%%G
)
)>“projections.txt”
以下方法将更快、更有效
@(For %%G In ("*.prj")Do @(Echo ".prj file found">CON
Echo %%G
"%ProgramFiles%\GDAL\gdalsrsinfo.exe" -e proj4 %%G
))>"projections.txt"
它更快、更高效,因为它不创建输出文件,然后为找到的每个.prj
文件打开、写入和关闭它两次
以更简化的格式:
@Echo关闭
(
对于%%G英寸(“*.prj”)请执行以下操作(
找到Echo“.prj文件”>CON
回声%%G
%ProgramFiles%\GDAL\gdalsrsinfo.exe“-e proj4%%G
)
)>“projections.txt”
对于(*.prj)do中的%%a(
),您是否在不必要且错误使用的(如果存在)行上读取了错误?对于(*.prj)do中的%%a(
您是否阅读了不必要且错误使用的if exist行上的错误?
?我想作者已经回答了这个问题-虽然您的答案更高效、更优雅,但初学者更难理解。@GarthCooper,我添加了两个换行符和显式的@Echo Off
,使它看起来更简单ginners.我想作者已经回答了这个问题-虽然你的答案更有效、更优雅,但初学者更难理解。@GarthCooper,我添加了两个换行符和显式的@Echo Off
,让初学者看起来更简单。