Windows shell脚本转换目录中的所有文件

时间:2016-09-15 13:09:49

标签: string windows loops batch-file

我是这个论坛的新手,从不使用Windows批处理文件,但是对于我的研究论文,我需要使用以下命令将meteo文件(.rad)转换为.asc文件:

.\gridasci.exe ver_500-2012071712.rad meteo-2012071712.asc

其中2012071712是包含时间的日期。现在我有很多.rad文件,它们都具有相同的结构但是日期不同,并希望将它们转换为.asc文件,对于这些文件,windows批处理文件会很好,它会遍历所有文件。所以代码草图可能如下所示:

for (all files with right format) in (this directory) do (
    date = extract date from (ver_500-date.rad)
    .\gridasci.exe ver_500-date.rad meteo-date.asc
)

非常感谢任何帮助!

非常感谢你,祝你有个美好的一天。

2 个答案:

答案 0 :(得分:0)

也许:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%A IN (ver_500-*.rad) DO (SET "_=%%~nA"
    ECHO=.\gridasci.exe %%A meteo-!_:*-=!.asc)
ENDLOCAL
TIMEOUT -1 >NUL
EXIT/B

如果对返回的结果满意,则对文件从第4行删除ECHO= 运行gridasci。

答案 1 :(得分:0)

假设您使用Windows NT命令处理器(cmd.exe)...

setlocal EnableDelayedExpansion
for %%f in (ver_500-*.rad) do (
    set "date=%%f"
    set "date=!date:ver_500-=!"
    set "date=!date:.rad=!"
    .\gridasci.exe ver_500-!date!.rad meteo-!date!.asc
)

您应该了解Delayed Expansion以及string replace in variable expansion如何运作。