这是我的第一个批处理脚本。我想转换文件列表并使用输入文件名的子字符串(一年中的某一天)。但是子字符串部分不起作用:
SETLOCAL EnableDelayedExpansion
FOR %G IN (%dirInp%%station%???0.DAT) DO (
SET filInp="%G"
SET doy=!filInp:~-9,3! rem this doesn't work?
rem Convert Trimble GPS receiver observations to RINEX
%dirExe%teqc -tr d %G > %dirOut%%station%!doy!0.%yy%D
)
那么,我应该怎么做呢?
答案 0 :(得分:0)
除了@Stephan的注释之外,我还更新了您的代码,以使用一些抽象的文件路径和子字符串参数来制作一个最小的工作示例(MWE)。
比起我将SETLOCAL EnableDelayedExpansion
移到FOR
循环中,现在它在Windows 7上适用于我。
我还通过SETLOCAL EnableDelayedExpansion
关闭了endlocal
(可能会对进一步的代码执行敏感
@echo off
FOR %%G IN (C:\DirInput_StationA\201901.DAT C:\DirInput_StationB\201812.DAT) DO (
SETLOCAL EnableDelayedExpansion
SET "filInp=%%G"
SET "doy=!filInp:~-10,4!"
rem Convert Trimble GPS receiver observations to RINEX
REM Changed your call to echo of the vars
echo G: "%%G"; doy: "!doy!"
endlocal
)