中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-11 23:47
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 复制,全排列,替换综合在一起的一个问题 查看 764 回复 10
楼 主 复制,全排列,替换综合在一起的一个问题 发表于 2009-06-04 09:20 ·  中国 江苏 南京 电信
初级用户
积分 26
发帖 32
注册 2009-05-28 06:04
17年会员
UID 146131
性别 男
状态 离线
我想在txt文档中输出一系列内容,格式如下:
mat_create_lam3( "TSCF", "", 1, , , , , 4, "", "Create" )

---------------------------------------这里列举2个句子,在txt里是写在一行的。上面是一个,下面是一个。

mat_create_lam3( "TSCC", "", 1, , , , , 4, "", "Create" )

………………
格式都是按上面的格式输出,总共有4种变化形式,T,S,C,F,这4个模式对应后面第一个中括号中内容。首字母都相同,T,对应T300,S,对应shear,C,对应crack,F对应failure.如第一个中的 TSCF,对应。。每句就这2个地方有变化。列出所有的情况,也就是T,S,C,F的全排列的可能,总共有4*4*4*4=256种情况。
要将这256个句子写在一个文本文档里输出。

不知道我说清楚了没,批处理能否实现吗?谢谢各位热心朋友!

[ Last edited by superchao115 on 2009-6-4 at 09:25 ]
2 发表于 2009-06-04 10:51 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
4位数的排列应该只有24种吧?
难道 aaaa aaab aaac 也算?
另外不知道你要输出怎样的格式,最好给出几个输出后的例子。
如果这个问题用bat来作,效率会很低,你的文件大概有多少行?

[ Last edited by 26933062 on 2009-6-4 at 10:54 ]
致精致简!
3 发表于 2009-06-04 11:01 ·  中国 江苏 南京 电信
初级用户
积分 26
发帖 32
注册 2009-05-28 06:04
17年会员
UID 146131
性别 男
状态 离线
AAAA,AAAB,AAAC,AAAD都算,所有的可能都算。256种
给的那2个句子就是格式呀。就是2个地方变化,其他的都一样。
上面给的那个放文本里就一行,256种情况,一种情况一句,共256句。
4 发表于 2009-06-04 11:43 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
文本中不能含有 半角 !符号
:

@echo off&setlocal enabledelayedexpansion
(for /f "tokens=1-2* delims=" %%i in (a.txt) do (
for /f "tokens=1* delims=," %%a in ("%%i") do (
set "num1=%%a"&set "num2=%%b"
set "num1=!num1:~0,-6!"
)
set "str=%%j"&set "str=!str:,=!"&set "str=!str:"= !"
for %%a in (!str!)do set var=%%a&set tem=!tem! !var:~0,1!&set "!var:~0,1!=%%a"
for %%a in (!tem!) do (
for %%b in (!tem!) do (
for %%c in (!tem!) do (
for %%d in (!tem!) do (
echo !num1!"%%a%%b%%c%%d",!num2!"" %%k
))))))>b.txt
start b.txt


[ Last edited by 26933062 on 2009-6-4 at 11:45 ]
致精致简!
5 发表于 2009-06-04 12:10 ·  中国 江苏 南京 电信
初级用户
积分 26
发帖 32
注册 2009-05-28 06:04
17年会员
UID 146131
性别 男
状态 离线
运行不了哇?
6 发表于 2009-06-04 12:19 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
为什么我运行正确呢?
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
superchao115 +1 2009-06-04 12:27
致精致简!
7 发表于 2009-06-04 12:21 ·  中国 江苏 南京 电信
初级用户
积分 26
发帖 32
注册 2009-05-28 06:04
17年会员
UID 146131
性别 男
状态 离线
我希望得到的结果是:
mat_create_lam3( "TSCF", "", 1, ["T300", "shear", "crack", "failure"], ["1.000000E+000", "1.000000E+000", "1.000000E+000", "1.000000E+000"], ["0.000000E+000", "4.500000E+001", "9.000000E+001", "-4.50000E+001"], ["", "", "", ""], 4, "", "Create" )

mat_create_lam3( "TSCC", "", 1, ["T300", "shear", "crack", "crack"], ["1.000000E+000", "1.000000E+000", "1.000000E+000", "1.000000E+000"], ["0.000000E+000", "4.500000E+001", "9.000000E+001", "-4.50000E+001"], ["", "", "", ""], 4, "", "Create" )

这样下去,256行。。。 可能你没明白我的意思。
8 发表于 2009-06-04 12:26 ·  中国 江苏 南京 电信
初级用户
积分 26
发帖 32
注册 2009-05-28 06:04
17年会员
UID 146131
性别 男
状态 离线
9 发表于 2009-06-04 12:27 ·  中国 江苏 南京 电信
初级用户
积分 26
发帖 32
注册 2009-05-28 06:04
17年会员
UID 146131
性别 男
状态 离线
谢谢你,我刚弄错了。不好意思,谢谢了,高手。
10 请问在批处理中如何忽略空格 发表于 2009-06-04 20:50 ·  中国 云南 昆明 电信
初级用户
积分 36
发帖 25
注册 2009-06-01 08:44
17年会员
UID 146434
性别 男
状态 离线
例如set /p yn=
if "%yn%"=="y" goto 1
if "%yn%"=="n" goto 2
如果输入的字符中有空格或错误字符的话,它下面的分支语句if就起不到作用,它就只会按顺序执行
11 发表于 2009-06-04 22:37 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
如果前面字符固定的 我将4楼楼兄的简化下:
将开启变量延迟 放在FOR里

@echo off
(for /f "tokens=1,2* delims=" %%i in (a.txt) do (
set num=%%i&set mun=%%k
setlocal enabledelayedexpansion
for %%a in (%%j)do set var=%%~a&set tem=!tem! !var:~0,1!&set "!var:~0,1!=%%~a"
for %%a in (!tem!) do (
for %%b in (!tem!) do (
for %%c in (!tem!) do (
for %%d in (!tem!) do (
echo !num:~,-14!%%a%%b%%c%%d!num:~-10!!mun!
))))))>d.txt
start d.txt
简单!简单!再简单!
论坛跳转: