中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-16 03:38
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [请教]如何动态改写变量的默认值 查看 1,167 回复 5
楼 主 [请教]如何动态改写变量的默认值 发表于 2006-10-18 10:15 ·  中国 浙江 杭州 电信
中级用户
★★
积分 305
发帖 85
注册 2005-05-23 00:00
UID 39004
性别 男
状态 离线
我写了个批处理文件,遇到个问题请大家帮忙,看看能不能解决:
这个批处理文件有个变量A,在每次启动这个批处理时需要用户输入字符。同时有另一个变量B,当用户输入新值时,B调用A,如果用户不输入任何内容,则B使用默认值。具体内容如下:
:A
echo 请输入A值:
set /p A=
:B
if {%A%}=={} set A=0x6100830c
:c
call:B
现在我希望当用户输入A的值后,能自动改写set A后面的内容,并保存。下次运行时,如果不输入,则调用A的新默认值。不知道能不能实现。
另外再请教 一下:如何写个批处理获取包括某个扩展名的文件名?比如说:我C盘下有个文件名是a.bin(a的长度不固定)如何找到这个文件并赋给B变量?
2 发表于 2006-10-18 10:49 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

  先看你的第二个问题.

@echo off
set /p wj= 请输入你要找的文件的名字。
for /f %%i in ('dir /s/b/a-d c:\%wj%') do (
@echo 你要找的文件%%~nxi位于%%~fi.
echo.
echo 文件名为:%%~nxi
echo.)
PAUSE>NUL
3 发表于 2006-10-18 12:39 ·  中国 浙江 杭州 电信
中级用户
★★
积分 305
发帖 85
注册 2005-05-23 00:00
UID 39004
性别 男
状态 离线
谢谢,我已在本坛找到第二个问题的解决方法。但是随之带来一个新的问题:这个批处理运行第一次的时候,没有问题,但重复运行时却提示:'find' 不是内部或外部命令,也不是可运行的程序或批处理文件。

脚本如下:
:1
dir "*.bin" | find /I "%3640%" > b.txt
FOR /F "tokens=4" %%a IN (b.txt) do (set id=%%a)
for /f "tokens=1,2 delims=*" %%i in (b.txt) do call :iosfile %%i
:iosfile
set path=%CD%\%id%
del b.txt
set iosname=%path%
goto 1
4 发表于 2006-10-18 13:01 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
:1
dir "*.bin" | find /I "%3640%" > b.txt
FOR /F "tokens=4" %%a IN (b.txt) do (set id=%%a)
for /f "tokens=1,2 delims=*" %%i in (b.txt) do call :iosfile %%i
:iosfile
set path=%path%;%CD%\%id%
del b.txt
set iosname=%path%
goto 1
第一高手 第二高手

5 发表于 2006-10-18 13:14 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

  顶楼上的。

  这个细节值得注意咯...
6 发表于 2006-10-18 13:32 ·  中国 浙江 杭州 电信
中级用户
★★
积分 305
发帖 85
注册 2005-05-23 00:00
UID 39004
性别 男
状态 离线
感谢两位的提醒,原来是因为我无意中使用的系统的变量:path.我把path改为其他的就好了
论坛跳转: