Board logo

标题: gawk命令该如何将带有长路径的文件放入到语句中? [打印本页]

作者: youaoyi     时间: 2008-9-17 10:35    标题: gawk命令该如何将带有长路径的文件放入到语句中?

gawk -F"|" -v line=7 "NF!=line+1{print>\"新文本1.txt\"}NF==line+1{print>\"新文本2.txt\"}" a.txt 运行后可以将文本中分隔符为7个的行与不是7个的行分成两个文本。 为了方便操作并把新生成的文本放在原文件同目录下, 修改成下面这样后就不能正常运行了, gawk命令该如何将带有路径的文件放入到语句中呢? @echo off set path=%path%;"%ProgramFiles%\tools" echo. echo. set /p file= 请将要处理的文本拖放到这里: echo. set /p geshu= 此文本每行中应该有几个分隔符: set /a geshu+=1 echo. gawk -F"|" "NF!=%geshu%{print>\"%file%.新文本1.txt\"}NF==%geshu%{print>\"%file%.新文本2.txt\"}" "%file%" echo. pause ================================== 样本: a.txt 1|0757 | 合同 | 其它 | 殷晏 | 200837015029392 | 4000.0 | 2|0752 | 合同 | 经济原因 | 葛宝 | 200000026251 | 10232.35 | 3|2810 | 合同 | 经济原因 | 王传 | 2002810000013079 | 479.0 | 4|2810 | 合同 | 经济原因 | 王传 | 20028000013079 | 479.0 | 5|2810 | 合同 | 经济原因 | 趙朹 | 燕 | 200231000013099 | 939.0 | 6|2810 | 合同 | 经济原因 | 王传 | 200237281000013079 | 23.72 | 7|2810 | 合同 | 经济原因 | 王传 | 200237810000013079 | 260.28 | 8|0808 | 合同 | 经济原因 | 梁汝 | 2005300005411 | 280.0 | 9|1104 | 合同 | 其它 | 张成 | 2008374015010838 | 1630.0 | 10|1104 | 合同 | 其它 | 张成 | 200830015010838 | 36.0 | 11|1104 | 合同 | 其它 | 张成 | 200837015010845 | 10.0 | 12|1104 | 合同 | 其它 | 张成 | 20083715010845 | 10.0 | 13|1104 | 合同 | 其它 | 张成 | 20083602015010845 四湖 | [ Last edited by youaoyi on 2008-9-17 at 11:52 AM ]

作者: HAT     时间: 2008-9-17 11:27
@echo off
set path=%path%;"%ProgramFiles%\tools"
echo.
echo.
set /p file= 请将要处理的文本拖放到这里:
echo.
set /p geshu= 此文本每行中应该有几个分隔符:
set /a geshu+=1
echo.
set tmpfile=%file:\=\\%
gawk -F"|" "NF!=%geshu%{print>\"%tmpfile%.新文本1.txt\"}NF==%geshu%{print>\"%tmpfile%.新文本2.txt\"}" "%file%"
echo.
pause

作者: youaoyi     时间: 2008-9-17 11:44
仍需要解决长目录名(比如桌面)下文档的拖入,以及待处理文本的文件名中带有特殊字符(比如 -.空格)的问题。 比如处理 “C:\Documents and Settings\Administrator\桌面\测试文本\T1. T 2.5.a---7.txt”这个文档就仍然会产生问题。 [ Last edited by youaoyi on 2008-9-17 at 11:51 AM ]

作者: metoo     时间: 2008-9-17 20:13
脚本中使用路径类似注册表,需要双斜杠。本人很顽固,不管事情大小全部用脚本不用选项,自己试试吧

作者: HAT     时间: 2008-9-17 20:59
@echo off
set path=%path%;"%ProgramFiles%\tools"
echo.
echo.
set /p file= 请将要处理的文本拖放到这里:
echo.
set /p geshu= 此文本每行中应该有几个分隔符:
set /a geshu+=1
echo.
set file=%file:"=%
for /f "delims=" %%a in ('dir /s /b "%file%"') do (
  set shortfile=%%~sa
  set filename=%%~nxa
)
set tmpfile=%shortfile:\=\\%
gawk -F"|" "NF!=%geshu%{print>\"%tmpfile%.新文本1.txt\"}NF==%geshu%{print>\"%tmpfile%.新文本2.txt\"}" "%file%"
ren "%shortfile%.新文本1.txt" "%filename%.新文本1.txt"
ren "%shortfile%.新文本2.txt" "%filename%.新文本2.txt"