的部分我已經創建代碼遍歷的files.txt
每一行,並確定如果該文件是car
,boat
或neither
並將該信息存儲到SendType.txt
。這是通過使用findstr
命令並搜索boat.txt
和car.txt
的列表來完成的。本質上是代碼的設計方式,它將採取第一行files.txt
,看看它是否可以找到car.txt
中的字符串(如果car
輸出爲SendType.txt
),如果不是,它將搜索boat.txt
中的字符串(如果字符串是在boat.txt
發現,boat
輸出到SendType.txt
),如果字符串沒有在任何car.txt或boat.txt
找到,則文本neither
輸出到SendType.txt
使用FINDSTR用正則表達式搜索字符串
現在整個串線的代碼搜索。每個字符串類似於11111_2222-22_2010-09-09_10-24-20.zip
(= ID,2222-22
=型號,2010-09-09
=日期,10-24-20
=交易ID)。
我想替換當前的Findtr行,它搜索整行,搜索整個字符串,除了日期部分。我附上了我的代碼以供參考,以及一些正在輸入的文件的例子。提前致謝!
@echo off
FOR /F %%a in (files.txt) do (
findstr %%a car.txt
if errorlevel 1 (
findstr %%a boat.txt
if errorlevel 1 (
echo neither >>SendType.txt
) else (
echo boat >>SendType.txt
)
) else (
echo car >>SendType.txt
)
)
car.txt
11111_2222-22_2010-09-09_10-24-20.zip
11112_2222-11_2011-11-09_10-24-25.zip
boat.txt
11122_1111-22_2012-04-09_11-29-56.zip
11144_3333-11_2011-12-22_06-29-66.zip
files.txt
11122_1111-22_2000-01-01_11-29-56.zip
11144_3333-11_2000-01-01_06-29-66.zip
11155_1212-12_2000-01-01_11-19-69.zip
11111_2222-22_2000-01-01_10-24-20.zip
11112_2222-11_2000-01-01_10-24-25.zip
12345_2233-12_2000-01-01_07-27-44.zip
期望的輸出:
SendType.txt
boat
boat
neither
car
car
neither
UPDATE 10/15 3:00 PM 使用dbenham的代碼和解析技術目前的方法是如下:
@echo off
>SendType.txt (
for /f "tokens=1,2,3,4 delims=_" %%a in (filenames.txt) do (
findstr /c:"%%a_%%b_%%d" sneakernet.txt >nul && (echo sneakernet) || (
findstr /c:"%%a_%%b_%%d" devmed.txt >nul && (echo devmed) || echo tanto
)
)
)
非常感謝回覆。你的想法很好,但有一個問題我可能沒有在我的原始問題中說清楚:'files.txt'中有幾個會話,其中'ID'和'model'編號是相同的,但交易是不同。 (例如,存在'11122_1111-22_2000-01-01_11-29-56.zip'和'11122_1111-22_2010-04-04_11-29-59.zip')。所以文件不能通過簡單地使用字符串的開始(使用'ID'和'model')來分類。 'findstr'命令還必須考慮到'交易'編號。 –
我已更新原始問題以顯示代碼的新更改。 'findstr'命令在基於'_'字符的解析中無法正常工作。 –
@JeffK - 最終工作代碼添加到答案。 – dbenham