Board logo

标题: [请教]如何动态改写变量的默认值 [打印本页]

作者: yardian     时间: 2006-10-18 10:15    标题: [请教]如何动态改写变量的默认值

我写了个批处理文件,遇到个问题请大家帮忙,看看能不能解决:
这个批处理文件有个变量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变量?
作者: lxmxn     时间: 2006-10-18 10:49

  先看你的第二个问题.
@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

作者: yardian     时间: 2006-10-18 12:39
谢谢,我已在本坛找到第二个问题的解决方法。但是随之带来一个新的问题:这个批处理运行第一次的时候,没有问题,但重复运行时却提示:'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
作者: fastslz     时间: 2006-10-18 13:01
: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
作者: lxmxn     时间: 2006-10-18 13:14

  顶楼上的。

  这个细节值得注意咯...

作者: yardian     时间: 2006-10-18 13:32
感谢两位的提醒,原来是因为我无意中使用的系统的变量:path.我把path改为其他的就好了