无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 2722|回复: 8
打印 上一主题 下一主题

怎样按以下要求设置变量?

[复制链接]
跳转到指定楼层
1#
发表于 2010-5-9 16:41:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假如在我的硬盘里搜索到几个备份文件,并将其写入了xp.txt,内容如下:
d:\my\xp1.gho
e:\my\cy\xp2.gho
e:\my\cy\xp3.gho
f:\xp4.gho
g:\hy\kp\tr\xp5.gho


请问:怎样写一个批处理,要求输入一个字符就能设置指定文件作变量呢?
如:输入3,就能将第3个文件e:\my\cy\xp3.gho设置为变量。
2#
发表于 2010-5-9 16:48:16 | 只看该作者
我记得QEMUMENU.BAT里有这样的设计。应该只要小改动就能拿来用
回复

使用道具 举报

3#
发表于 2010-5-9 18:27:44 | 只看该作者
是不是这样?

:MENU
@CLS
ECHO.
ECHO.
ECHO.                ┏━━━━━━━━━━━━━━━━━━━━━━━┓
ECHO                 ┃                                              ┃
ECHO                 ┃     [1]  利用[INSTALL.WIM]生成[NT6x.VHD]     ┃
ECHO                 ┃                                              ┃
ECHO                 ┃     [2]  添加[NT6.x.VHD]项,到[BCD]菜单项     ┃
ECHO                 ┃                                              ┃
ECHO                 ┃     [3]  添加[Grub4DOS]项,到[BCD]菜单项     ┃
ECHO                 ┃                                              ┃
ECHO                 ┃     [4]  运行[BCDEDIT],查看[BCD]菜单内容     ┃
ECHO                 ┃                                              ┃
ECHO                 ┃     [5]  运行[BCDEDIT],删除[BCD]菜单内容     ┃
ECHO                 ┃                                              ┃
ECHO                 ┃     [6]  运行计算机管理,以便操作其它事项     ┃
ECHO                 ┃                                              ┃
ECHO                 ┃     [7]  运行[BOOTICE],查看[MBR]是否正确     ┃
ECHO                 ┃                                              ┃
ECHO                 ┃     [8]  运行[BCDTOOL],查看[BCD]是否正确     ┃
ECHO                 ┃                                              ┃
ECHO                 ┗━━━━━━━━━━━━━━━━━━━━━━━┛
ECHO.
@SET CHOICE=
@SET /P CHOICE=请输入数字或 [回车] 退出:
IF /I "%CHOICE%"=="1" @GOTO VHD
IF /I "%CHOICE%"=="2" @GOTO VHD
IF /I "%CHOICE%"=="3" @GOTO 0PE
IF /I "%CHOICE%"=="4" @GOTO BCDMENU
IF /I "%CHOICE%"=="5" @GOTO BCDDEL
IF /I "%CHOICE%"=="6" @GOTO MSC
IF /I "%CHOICE%"=="7" @GOTO BOOTICE
IF /I "%CHOICE%"=="8" @GOTO BCDTOOL
IF /I "%CHOICE%"=="" @EXIT
@GOTO MENU
回复

使用道具 举报

4#
发表于 2010-5-9 20:01:21 | 只看该作者

楼主看看 符合要求不

  1. @echo off
  2. set x=0
  3. for /f  %%d in (xp.txt) do (set /a x=x+1)
  4. echo 共%x%个镜像
  5. set t=
  6. set /p t=请选择:
  7. if %t% gtr %x% set t=%x%
  8. if %t% leq 1 for /f "delims=" %%d in (xp.txt) do (set xp=%%d&&goto :1)
  9. set /a n=t-1
  10. for /f "delims= skip=%n%" %%d in (xp.txt) do (set xp=%%d&&goto :1)
  11. :1
  12. echo %xp%
  13. pause
复制代码

[ 本帖最后由 ming6595 于 2010-5-9 22:39 编辑 ]
回复

使用道具 举报

5#
 楼主| 发表于 2010-5-10 11:29:45 | 只看该作者
原帖由 ming6595 于 2010-5-9 20:01 发表
@echo off
set x=0
for /f  %%d in (xp.txt) do (set /a x=x+1)
echo 共%x%个镜像
set t=
set /p t=请选择:
if %t% gtr %x% set t=%x%
if %t% leq 1 for /f "delims=" %%d in (xp.txt) do (set xp=%%d& ...

楼主果然是高手,我作了一下修改,为了更加直观,可否在显示xp.txt文件时,自动在前面添加上1、2、3、4、5的序号呢?,即显示为:
1. d:\my\xp1.gho
2. e:\my\cy\xp2.gho
3. e:\my\cy\xp3.gho
4. f:\xp4.gho
5. g:\hy\kp\tr\xp5.gho


我修改为如下:
@echo off
:0
cls
set x=0
for /f  %%d in (xp.txt) do (set /a x=x+1)
set y=请
echo 共搜索到以下 %x% 个备份文件:
echo.
type xp.txt
:1
echo.
set t=
set /p t=%y%输入选项(1-%x%):
if %t% gtr %x% set y=输入错误,请重新&&goto :1
if %t% lss 1 set y=输入错误,请重新&&goto :1
echo.
if %t% equ 1 for /f %%d in (xp.txt) do (set xp=%%d&&goto :2)
set /a n=t-1
for /f "skip=%n%" %%d in (xp.txt) do (set xp=%%d&&goto :2)
:2
echo 您要恢复的备份文件是:%xp%
echo.
pause

回复

使用道具 举报

6#
发表于 2010-5-10 15:37:39 | 只看该作者
楼主果然是高手

不带自己夸自己的


如你所愿
  1. @echo off
  2. set x=0
  3. for /f  %%d in (xp.txt) do (set /a x=x+1)

  4. set t=1
  5. :a

  6. if %t% equ 1 for /f "delims=" %%d in (xp.txt) do (set xp=%%d&&goto :1)
  7. set /a n=t-1
  8. for /f "delims= skip=%n%" %%d in (xp.txt) do (set xp=%%d&&goto :1)

  9. :1
  10. echo %t%. %xp%
  11. if %t% equ %x% goto :b
  12. set /a t=t+1
  13. goto :a
  14. :b
  15. pause
复制代码

[ 本帖最后由 ming6595 于 2010-5-10 15:46 编辑 ]
回复

使用道具 举报

7#
 楼主| 发表于 2010-5-10 17:19:56 | 只看该作者
原帖由 ming6595 于 2010-5-10 15:37 发表

不带自己夸自己的


如你所愿@echo off
set x=0
for /f  %%d in (xp.txt) do (set /a x=x+1)

set t=1
:a

if %t% equ 1 for /f "delims=" %%d in (xp.txt) do (set xp=%%d&&goto :1)
set /a n=t- ...

多谢指点!但这个只能显示:
1. d:\my\xp1.gho
2. e:\my\cy\xp2.gho
3. e:\my\cy\xp3.gho
4. f:\xp4.gho
5. g:\hy\kp\tr\xp5.gho

却不能设置变量,假如:输入3,却不能将第3个文件e:\my\cy\xp3.gho设置为变量。我的意思是既要在文件前显出序号,而输入这个序号数字时又能将这个文件设置成变量。

[ 本帖最后由 ljb603 于 2010-5-10 17:26 编辑 ]
回复

使用道具 举报

8#
发表于 2010-5-10 17:40:41 | 只看该作者

回复 #7 ljb603 的帖子

i服了you
你把4楼的代码接到6楼的代码后面 做些简单的修改
是不是就和你想要的一样了


  1. @echo off
  2. set x=0
  3. for /f  %%d in (xp.txt) do (set /a x=x+1)
  4. set t=1
  5. :a
  6. if %t% equ 1 for /f "delims=" %%d in (xp.txt) do (set xp=%%d&&goto :1)
  7. set /a n=t-1
  8. for /f "delims= skip=%n%" %%d in (xp.txt) do (set xp=%%d&&goto :1)
  9. :1
  10. echo %t%. %xp%
  11. if %t% equ %x% goto :b
  12. set /a t=t+1
  13. goto :a
  14. :b
  15. echo 共%x%个镜像
  16. set t=
  17. set /p t=请选择:
  18. if %t% gtr %x% set t=%x%
  19. if %t% leq 1 for /f "delims=" %%d in (xp.txt) do (set xp=%%d&&goto :2)
  20. set /a n=t-1
  21. for /f "delims= skip=%n%" %%d in (xp.txt) do (set xp=%%d&&goto :2)
  22. :2
  23. echo %xp%
  24. pause
复制代码

[ 本帖最后由 ming6595 于 2010-5-10 17:44 编辑 ]
回复

使用道具 举报

9#
 楼主| 发表于 2010-5-11 12:44:54 | 只看该作者

回复 #8 ming6595 的帖子

呵呵呵,恰到妙处。多谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-8-27 03:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表