将截断的文件名传递给另一个批处理文件

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_。