![Board logo](images/default/logo.gif)
标题: [文本处理] 批处理怎样把多行内容分别赋值给不同的变量? [打印本页]
作者: WUYAN520 时间: 2010-10-16 12:25 标题: 批处理怎样把多行内容分别赋值给不同的变量?
如果a.txt是多行文本,例如
aaabbbcccdddeeefff
123456789
987654321
abcdefj
把内容分成四行,分别赋值为A B C D,怎么写,尽量多的方法咯
作者: leap 时间: 2010-10-16 13:15 标题: 回复 1楼 的帖子
- @echo off
- for /f %%i in (1.txt) do (
- if not defined A (set A=%%i) else (
- if not defined B (set B=%%i) else (
- if not defined C (set C=%%i) else (
- if not defined D (set D=%%i))))
- )
- echo %A%&echo %B%&echo %C%&echo %D%
- pause
复制代码
作者: wc726842270 时间: 2010-10-16 20:34
多写了一个变量,其它就没什么了- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (a.txt) do (set a=!b!
- set b=!c!
- set c=!d!
- set d=!e!
- set e=%%i)
- echo %a%
- pause
- echo %b%
- pause
- echo %c%
- pause
- echo %d%
- pause
- echo %e%
- pause
复制代码
作者: Batcher 时间: 2010-10-16 20:36 标题: 回复 3楼 的帖子
如果文件行数不确定,你准备咋办?
作者: wc726842270 时间: 2010-10-16 20:52
说实话这还真不好说,不过具体问题具体分析吧,呵呵
作者: yangfengoo 时间: 2010-10-16 20:58
- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do set #%%a=%%b&set n=%%a
- for /l %%a in (1,1,!n!) do echo,!#%%a!
- pause
复制代码
[ 本帖最后由 yangfengoo 于 2010-10-16 21:15 编辑 ]
作者: qq506657335 时间: 2010-10-16 21:54
把行的内容赋给a-z字母。。搞了1个多小时也搞不好。。。。只能做出下面的效果。。。。- @echo off &setlocal enabledelayedexpansion
- for /f "delims=" %%i in (1.txt) do (
- set /a a+=1
- set c!a!=%%i
- )
- for /l %%i in (1 1 %a%) do (
- echo "c%%i"的内容为!c%%i!
- )
- pause
复制代码
作者: vsbat 时间: 2010-10-16 21:56
- @echo off
- setlocal enabledelayedexpansion
- set n=1
- for /f "delims=" %%i in (a.txt) do (
- set "_!n!=%%i"
- set /a n+=1
- )
- set _
- pause
复制代码
作者: qq506657335 时间: 2010-10-16 22:13
向8L学习下。。。。
作者: Batcher 时间: 2010-10-16 23:15 标题: 回复 5楼 的帖子
那就好好向6、7、8楼学习一下吧^_^
作者: vsbat 时间: 2010-10-16 23:56
- @echo off
- setlocal enabledelayedexpansion
- ::文本行赋值于26个字母的组合
- set str=ABCDEFGHIJKLMNOPQRSTUVWXYZ
- set #n=0
- set #m=1
- set #k=26
- for /f "delims=" %%i in (a.txt) do (
- call set "t=%%str:~!#n!,!#m!%%"
- set "!t!=%%i"
-
- echo !t!=%%i
-
- set /a #n+=1
- if !#n! == !#k! (set /a #n=0&set /a #m+=1&set /a #k-=1)
- if !#k! == 1 (goto :End)
- )
-
- :End
- ::共可赋值行数:N=26 + 25 + 24 + ···· + 1 = (26+1)*26/2 = 351
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |