写一段代码打算把文档TEST.LST 分割成 aaaaadb.bvbde.txt
和 %j.%b.txt
:D:D:D
%j %b 分别取自'File . . . . . . . . : , Library . . . . . . : 后的字符串.
以 * * * * * E N D O F L I S T I N G * * * * * 来分割文件.
我写了一小段想截取 %J 和%b 也不能成功, 不知道为什么.
rem @echo off
set fil=
set lib=
cd.>list.txt
setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%i in (test.lst) do (
if /i "%%i"=="File . . . . . . . . :" set fil=%%j
if /i "%%i"==Library . . . . . . :" set lib=%%j
)
if "%fil%" neq "" echo !fil!>>list.txt
do ( if "%lib%" neq "" echo !lib!>>list.txt
echo %lib%.%fil%.txt
rem copy test.lst %lib%.%fil%.txt
)
pause
rem @echo off
set fil=
set lib=
for /f "tokens=1,2 delims=:" %%i in (test.lst) do (
if /i "%%i"== "File . . . . . . . . " if "%fil%"=="" set fil=%%j
if /i "%%i"== " Library . . . . . . " do ( if "%lib%"=="" set lib=%%j
if "%fil%" neq "" if "%lib%" neq "" goto end )
)
)
:end
echo %lib%.%fil%.txt
pause作者: digitalchina 时间: 2007-7-3 02:30 不会去空格了
rem @echo off
set fil=
set lib=
for /f "tokens=1,2 delims=:" %%i in (test.lst) do (
if /i "%%i"== "File . . . . . . . . " set fil=%%j & set strfil=%%j & call set "fil=%%fil%%: =%%"
if /i "%%i"== " Library . . . . . . " ( set lib=%%j & set strlib=%%j & call set "lib=%%lib%%: =%%"
if "%strfil%" neq "" if "%strlib%" neq "" goto end )
)
)
rem @echo off
set fil=
set lib=
for /f "tokens=1,2 delims=:" %%i in (test.lst) do (
if /i "%%i"== "File . . . . . . . . " set fil=%%j & set strfil=%%j & call set "fil=%%strfil: =%%"
if /i "%%i"== " Library . . . . . . " ( set lib=%%j & set strlib=%%j & call set "lib=%%strlib: =%%"
if "%strfil%" neq "" if "%strlib%" neq "" goto end )
)
)
:end
echo %lib%.%fil%.txt
pause
还差文件分割
[ Last edited by digitalchina on 2007-7-3 at 08:26 AM ]作者: bjsh 时间: 2007-7-3 10:15 提醒: 可以先输出到 临时文件夹;
遇到 * * * * * E N D O F L I S T I N G * * * * * 时;
把临时文件夹改名为: %lib%.%fil%.txt
顺便贴个awk的解决:
$ awk '/File/{name1=$NF};/Library/{name2=$NF};{if ( $0 ~ /E N D O F L I S T I N G/ ) {print $0>"temp.txt";close("temp.txt"); system("mv temp.txt "name1"."name2".txt");}else {print $0>"temp.txt"} }' 1.txt作者: digitalchina 时间: 2007-7-3 10:20 标题: 只差一步了。
getname.bat
------------------------------------------------------------------------------
rem @echo off
copy tmp.lst temp.lst >nul 2>nul
set fil=
set lib=
for /f "tokens=1,2 delims=:" %%i in (temp.lst) do (
if /i "%%i"== "File . . . . . . . . " set fil=%%j & set strfil=%%j & call set "fil=%%strfil: =%%"
if /i "%%i"== " Library . . . . . . " set lib=%%j & set strlib=%%j & call set "lib=%%strlib: =%%"
if "%strfil%" neq "" if "%strlib%" neq "" goto end
)
:end
ren temp.lst %lib%.%fil%.lst >nul 2>nul
del temp.lst >nul 2>nul
del tmp.lst >nul 2>nul
split.bat
------------------------------------------------------------------
rem @echo off
for /f "tokens=1,* delims= " %%a in ('type job.all') do (
set a=%%a
echo %%a %%b>>tmp.lst
if "%%b"=="* * * * E N D O F L I S T I N G * * * * *" call getname
@echo off
copy tmp.lst temp.lst >nul 2>nul
set blank=
set fil=%blank%
set lib=%blank%
for /f "tokens=1,2 delims=:" %%i in (temp.lst) do (
if /i "%%i"== "File . . . . . . . . " set fil=%%j & set strfil=%%j & call set "fil=%%
strfil: =%%"
if /i "%%i"== "Library . . . . . . " set lib=%%j & set strlib=%%j & call set "lib=%%
strlib: =%%"
if "%fil%" neq " " if "%lib%" neq " " goto end