由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 一个batch file的问题
相关主题
[合集] Adobe面试题, 怎么能把很多文件读到Memory ?node.js里面,哪些操作用http,哪些用websocket(tcp) ?
what's wrong with this scripts?variable passing?请问这个cmake规则如何写?
how to check the value of $(IntDir) in visual stdioregister variable
should the .dll and .lib have the same name?lambda的一个疑问
a PERL opendir/readdir questionsql 数据是存在哪里 (转载)
有人用cmake吗?问个有关Perl Subroutine 转换到Module的问题
Find and delete folder in C++用包子呼唤大牛们--问关于C++Destructor的问题
delete files in windowsPython的With語句嚇著我了
相关话题的讨论汇总
话题: echo话题: set话题: fa话题: fd话题: file
进入Programming版参与讨论
1 (共1页)
x*******a
发帖数: 11067
1
菜鸟诚惶诚恐地上来请教,花了一天琢磨一个BATCH FILE,就是为了LOOP THROUGH一堆
SUBDIRECTORY,打开每个SUBDIR下面的同一个TEXT文件,然后替换里头的一个参数。
总算是WORK了,但是很多是照葫芦画瓢。特别不明白的是两个
!!中间加一个VARIABLE的名字是啥意思。
特别不明白的是,为啥我不能直接让
%%a=123
echo %%a >>file
必须要让
fa=%%a
set fa=123
echo !fa! >>file
请高手解释一下,谢谢!
程序在下面写的很傻,轻拍。
@echo off
setlocal enabledelayedexpansion
FOR /D %%1 IN ("*") DO (
rem cd to all sub directories
echo %%1
cd %%1
rename OUT.txt OUT.txt1
FOR /F "tokens=1,2,3,4,5,6,7 delims=" %%a IN (OUT.txt1) DO (
set fa=%%a
set fb=%%b
set fc=%%c
set fd=%%d
set fe=%%e
set ff=%%f
set fg=%%g
echo %%a %%b %%c %%d %%e %%f %%g
echo !fa! !fb! !fc! !fd! !fe! !ff! !fg!
rem echo %%a
if !fd!==xxxx set fd=yyyyy
if !fa!==N: echo !fa!\!fb!\!fc!\!fd!\!fe!\!ff!\!fg! >>OUT.txt
if NOT !fa!==N: echo !fa! >>OUT.txt )

cd ..
)
b********h
发帖数: 119
2
!var!是delayed variable expansion,这个你的脚本的第二行就是设置这个东西的。你
可以打set /?看他的帮助,里面有详细的解释。
%%a是循环的变量,是用来取他的值的,而不是赋值的。

【在 x*******a 的大作中提到】
: 菜鸟诚惶诚恐地上来请教,花了一天琢磨一个BATCH FILE,就是为了LOOP THROUGH一堆
: SUBDIRECTORY,打开每个SUBDIR下面的同一个TEXT文件,然后替换里头的一个参数。
: 总算是WORK了,但是很多是照葫芦画瓢。特别不明白的是两个
: !!中间加一个VARIABLE的名字是啥意思。
: 特别不明白的是,为啥我不能直接让
: %%a=123
: echo %%a >>file
: 必须要让
: fa=%%a
: set fa=123

x*******a
发帖数: 11067
3
多谢回复。
我读了读还是不大明白,又做了个简单的例子
@echo off
Setlocal EnableDelayedExpansion
Set _var=first
Set _var=second& Echo %_var% !_var!
Set _var=first
Set _var=second
Echo %_var% !_var!
FOR /D %%1 IN ("*") DO (
rem cd to all sub directories
Set _var2=%%1
echo %%1
echo %_var2%)
FOR /D %%1 IN ("*") DO (
rem cd to all sub directories
Set _var2=%%1
echo %%1
echo !_var2!)
结果是:
first second
second second
a
ECHO is off
b
ECHO is off
a
a
b
b
我特别不理解的是为什么会出那个ECHO is off.
b********h
发帖数: 119
4
因为你第一个循环里的
echo %_var2%
实际上执行的是
echo
这个例子本身就很好解释了delay expansion和非delay expansion的区别。

【在 x*******a 的大作中提到】
: 多谢回复。
: 我读了读还是不大明白,又做了个简单的例子
: @echo off
: Setlocal EnableDelayedExpansion
: Set _var=first
: Set _var=second& Echo %_var% !_var!
: Set _var=first
: Set _var=second
: Echo %_var% !_var!
: FOR /D %%1 IN ("*") DO (

1 (共1页)
进入Programming版参与讨论
相关主题
Python的With語句嚇著我了a PERL opendir/readdir question
A join B, spark里面怎么写?有人用cmake吗?
帮忙!!! 需要比较两文件, 有包子相送 (转载)Find and delete folder in C++
能专门开一个计算机语言形势研讨辩论版吗?delete files in windows
[合集] Adobe面试题, 怎么能把很多文件读到Memory ?node.js里面,哪些操作用http,哪些用websocket(tcp) ?
what's wrong with this scripts?variable passing?请问这个cmake规则如何写?
how to check the value of $(IntDir) in visual stdioregister variable
should the .dll and .lib have the same name?lambda的一个疑问
相关话题的讨论汇总
话题: echo话题: set话题: fa话题: fd话题: file