|
|
本帖最后由 kingboli 于 2012-9-2 16:19 编辑
请教两个程序需同时实现1、2; 或同时实现1、3
1. 提取文本A中每行最后一个“/”后面的字符,并将提取的内容保存到B文本。
2. 比较B文本和C文本的内容,看B中是否含有C文本中某行的内容,如果含有某行内容,则输出D文本中相应行的内容(D和C文本有相同的行数)。
3. 为了向牛牛们学习更多的知识,增加点难度,把“2” 中的内容改为“比较B文本和C文本的内容,看B中是否含有C文本中某行的内容,如果含有某行内容,则将C和D中该行的内容作为参数传给E程序”
如:
A的内容有如下格式(/的个数不确定):
u Dir1/dir2/dir3../a.txt
4849 Dir4/dir5/dir6../b(1.2.3).txt
ddd9 D ir4/dir6/d ir7../c d(1.2.3)fe(234).txt
fe Dir4/dir6/dir3../f f(1 2 3)e(2-3-4).txt
fe Dir4/di r4/dir2../dir..8/你好(中文括号)(英文括号).txt
C的内容为:
c d(1.2.3)fe(234).txt
(1.2.3).txt
a.txt
D的内容:
ddfejbln1
ffex2
ddfefrf3
按照1的要求:
B的内容应为:
a.txt
b(1.2.3).txt
c d(1.2.3)fe(234).txt
f f(1 2 3)e(2-3-4).txt
你好(中文括号)(英文括号).txt
按照2的要求,B和C比较,含有C中第1行的内容,则输出D中第1行的内容,然后发现同时含有C中第3行的内容,则继续输出D中第3行的内容.
最终的输出结果为:
ddfejbln1
ddfefrf3
按照3的要求,B和C比较,含有C中第1行的内容,则传递C和D中第1行的内容给程序E, 并执行E. 然后发现同时含有C中第3行的内容,则传递C和D中第3行的内容给程序E, 并继续执行E.
最终的输出结果为:
E "c d(1.2.3)fe(234).txt" "ddfejbln1"
E "a.txt" "ddfefrf3"
注:参照网友的程序,用如下程序实现第一步,但是遇到含有英文括号和空格的情况就会报错,求解释
for /f "delims=" %%j in (A.txt) do (
for /f "delims=" %%i in ("%%j") do (
set directory=%%i
set fname=
call :separate
)
)
exit 0
:separate
if not "%directory:~-1%"=="/" (
set fname=%directory:~-1%%fname%
set directory=%directory:~0,-1%
goto :separate
) else (
echo %fname% >>B.txt
) |
|