将截断的文件名传递给另一个批处理文件
Passing a truncated filename to another batch file
我在名为 cores 的文件夹中有一堆文件。这些文件的名称如 c_000223~a、c_120302~a 等
我有一个批处理文件,里面有一个 for 循环。它应该遍历每个核心文件并将其发送到另一个名为 RunMSFlux 的批处理文件进行处理。问题是 RunMSFlux 不接受它们的核心文件名。它不需要开头的'c_',只要000223~a、120302~a等等。
我无法修改 RunMSFlux 以接受 'c_',因为它是只读的。另外,我不想重命名核心文件,因为它们被我的批处理文件之外的其他程序使用。所以我需要一种方法来去除文件名开头的 c_,然后将其传递给 RunMSFlux。
到目前为止,这是我的批处理文件:
@echo on
set bindirectory=K:\Physics\bin12\
set coredirectory=K:\Physics\cores\
set quiet=yes
for %%f in ( %coredirectory%* ) do (
call %bindirectory%\RunMSFlux.bat %%f measbu measbu
)
有没有办法让批处理文件在将文件名传递给 for 循环之前先去掉 c_?或者,也许我可以创建一个 .txt 文件,其中包含截断的核心文件的名称,然后让脚本逐行通过它,并将这些名称传递给 for 循环?
经过无数次的哀嚎和咬牙切齿,我相信我终于有了一些有用的东西:
@echo on
set bindirectory=K:\Physics\bin12\
set coredirectory=K:\Physics\cores\
set quiet=yes
for /F "tokens=1* eol=_ delims=_" %%g in ( 'dir /A:-d /B %coredirectory%' ) do (
call %bindirectory%RunMSFlux.bat %%h measbu measbu
)
在将截断的文件名传递给循环内的 RunMSFlux.bat 之前,令牌、eol 和 delims 会删除 'dir /A:-d /B' 列出的文件名中的 c_。
我在名为 cores 的文件夹中有一堆文件。这些文件的名称如 c_000223~a、c_120302~a 等
我有一个批处理文件,里面有一个 for 循环。它应该遍历每个核心文件并将其发送到另一个名为 RunMSFlux 的批处理文件进行处理。问题是 RunMSFlux 不接受它们的核心文件名。它不需要开头的'c_',只要000223~a、120302~a等等。
我无法修改 RunMSFlux 以接受 'c_',因为它是只读的。另外,我不想重命名核心文件,因为它们被我的批处理文件之外的其他程序使用。所以我需要一种方法来去除文件名开头的 c_,然后将其传递给 RunMSFlux。
到目前为止,这是我的批处理文件:
@echo on
set bindirectory=K:\Physics\bin12\
set coredirectory=K:\Physics\cores\
set quiet=yes
for %%f in ( %coredirectory%* ) do (
call %bindirectory%\RunMSFlux.bat %%f measbu measbu
)
有没有办法让批处理文件在将文件名传递给 for 循环之前先去掉 c_?或者,也许我可以创建一个 .txt 文件,其中包含截断的核心文件的名称,然后让脚本逐行通过它,并将这些名称传递给 for 循环?
经过无数次的哀嚎和咬牙切齿,我相信我终于有了一些有用的东西:
@echo on
set bindirectory=K:\Physics\bin12\
set coredirectory=K:\Physics\cores\
set quiet=yes
for /F "tokens=1* eol=_ delims=_" %%g in ( 'dir /A:-d /B %coredirectory%' ) do (
call %bindirectory%RunMSFlux.bat %%h measbu measbu
)
在将截断的文件名传递给循环内的 RunMSFlux.bat 之前,令牌、eol 和 delims 会删除 'dir /A:-d /B' 列出的文件名中的 c_。