|
photonjl
新手上路
积分 8
发帖 6
注册 2010-9-30
状态 离线
|
『楼 主』:
[已解决]实例学习中遇到的SET用法的问题
近日开始学习批处理.从网上猎得程序一枚,本不胜心喜.奈何人在山中,望站中老马引领迷途.
此程序指在修改文本文件的内容.输入需要替换的文字内容及被替换成的结果内容,对于其中的SET用法实在是无从琢磨.XP下的帮助没有实例说明,搜索也没有找到.困惑实多.无寻花问柳之心,实求柳暗花明之路.望高手解倒悬之苦.
@echo off
setlocal enabledelayedexpansion
set file=
set /p file= 请输入要操作的文件名称(包括扩展名):
set "file=%file:"=%" ::[color=Red]此行不明白.是否是说将变量file中的字符"替换为空,用意何在.[/color]
for %%i in ("%file%") do set file=%%~fi ::[color=Red]SET FILE=%%~FI是什么用法,SET的帮助信息中好像没有[/color]
set replaced=
set /p replaced= 请输入即将被替换的内容:
set all=
set /p all= 请输入替换字符串:
for /f "delims=" %%i in ('type "%file%"') do (
set str=%%i
set "str=!str:%replaced%=%all%!" ::[color=Red]此行读不明白,叹号和若干%如何作用[/color]
echo !str!>>"%file%"_tmp.txt
)
copy "%file%" "%file%"_bak.txt >nul 2>nul
move "%file%"_tmp.txt "%file%"
start "" "%file%" [ Last edited by photonjl on 2010-10-3 at 17:29 ]
|
|
2010-10-2 13:03 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
|
2010-10-2 13:37 |
|
|
photonjl
新手上路
积分 8
发帖 6
注册 2010-9-30
状态 离线
|
『第
3 楼』:
版主,不行哎,这句还是看不懂.初学,单独的格式内容能懂,一看组合的实际语句就晕了.
代码中的两个叹号是种固定格式还是运算符啊
set "str=!str:%replaced%=%all%!"
|
|
2010-10-2 17:28 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
|
2010-10-2 19:31 |
|
|
726842270
初级用户
枫中残雪
积分 65
发帖 43
注册 2010-4-29 来自 吉林省长春市
状态 离线
|
|
2010-10-2 20:43 |
|
|
photonjl
新手上路
积分 8
发帖 6
注册 2010-9-30
状态 离线
|
『第
6 楼』:
有点感觉了
看了这些天的资料,有点感觉,不能说豁然开朗,略开矛塞.
变量延迟扩展,个人的理解如下:
假设批处理同学手拿一本数学课本,正经历一道试题,题目为"X=5,Y=7,请翻到数学课本152页寻找X,Y的值,求解2X+5Y+Z=422中Z的值".
肯定不用问,批处理同学直接将X=5,Y=7代入求解.根本不去理会那句奇怪的"请翻到数学课本152页寻找X,Y的值"话.你要问批处理同学为什么,他肯定说,你傻啊,前面已给变量赋值了,还找什么找.对于批同学来说,直接去题目中读变量比找变量来的快.如果题目没有变量值呢?批同学自已就给变量赋值为0,然后计算下去.并且洋洋得意的说"咱们这叫预处理.只管快的,不管对的"
如何对付此类傻叉?只管取白绫三尺,磨好上等朱砂,上书"setlocal EnableDelayedExpansion"若干血腥大字,向批处理颈中套去,死命拉紧白绫两端,"你丫找变量还是自己写变量!!!!!!!!!!"
以上只是个小玩笑.感谢各位回帖帮助.
|
|
2010-10-3 17:28 |
|
|
nicyang86
新手上路
积分 2
发帖 2
注册 2010-10-10
状态 离线
|
『第
7 楼』:
比喻的形象生动,茅塞顿开,高人!
比喻的形象生动,茅塞顿开,高人!
|
|
2010-10-12 00:35 |
|
|