我有一个文本文件RECORDS
,其中包含physionet
网站上一系列记录文件的地址列表:
Person_01/rec_1
Person_01/rec_2
.
.
.
Person_90/rec_1
Person_90/rec_2
我需要按如下所示对每行文本文件执行如下命令:
wfdb2mat -r rec_1 -f 0 -t 20 > rec_1m.info
此处,wfdb2mat
是Windows已知的命令,用于将窗口中的.dat
数据结构转换为.mat
已知的MATLAB
结构。此命令执行的输出报告存储为.info
与RECORDS
行相同的目录。
我已将批处理文件(convert.bat)写为:
@echo off
for /f %%a in (RECORDS) do (wfdb2mat -r %%~a -f 0 -t 20 > %%~am.info)
转换RECORDS
中列出的所有文件。
但遗憾的是,还有另外两个文件命名为.mat
和.hea
,它们与convert.batch
存储在同一目录中,并命名为rec_Xm.mat
和rec_Xm.hea
,其中X为RECORDS
中列出的记录号。
因此,我需要在for循环中添加一个额外的命令,将这些文件移动到RECORDS
中命名的文件夹中的位置。
我的批处理文件已更改为:
@echo off
for /f %%a in (RECORDS) do (wfdb2mat -r %%~a -f 0 -t 20 > %%~am.info & move rec_*.* %%~a)
问题是%%~a
包含文件夹名称和文件名,如Person1/rec_1
,我只需要文件夹名称即可将这些文件移动到。
如何拆分这些字符串以便在每次循环迭代中提取文件夹名称?
答案 0 :(得分:1)
基于我的评论以及我对你的命令应该做什么的假设
@Echo Off
For /F "Tokens=1-2 Delims=/" %%A In (RECORDS) Do (
wfdb2mat -r %%A/%%B -f 0 -t 20 >%%A/%%Bm.info
Move /Y %%B.* %%A)