Board logo

标题: [文件操作] 批处理如何把寻找的特定后缀的文件作为选项? [打印本页]

作者: zt404834426    时间: 2009-12-18 13:20     标题: 批处理如何把寻找的特定后缀的文件作为选项?

环境:
盘符,假设为x盘符。x盘根目录下有G目录。G目录下存储*.gho文件,这里的文件不固定,有时候可能放三个,有时候可能放两个,文件名也会更改,但都是放.gho文件!
目标:
批处理能自动列出G目录下得gho文件,并且把每个gho文件作为一个选择项。
效果:
比如G目录下有两个.gho文件分别为1.gho和2.gho,批处理寻找出来后可以变成
A:1.gho
B:2.gho
选择A就实行 ghost -rb x:\1.gho.
选择B就实行 ghost -rb x:\2.gho
如上效果!
作者: Batcher    时间: 2009-12-18 13:43

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set n=0
  4. for %%a in ("C:\test\*.gho") do (
  5.     set /a n+=1
  6.     set [!n!]=%%a
  7. )
  8. set [
  9. set /p input=请输入你的选择:
  10. ghost -rb ![%input%]!
复制代码

作者: lxzzr    时间: 2009-12-18 15:10     标题: 回复 2楼 的帖子

FOR 能直接列出来?通常的思维都是DIR,呵呵,涨见识了...
作者: zqz0012005    时间: 2009-12-18 19:19     标题: 回复 3楼 的帖子

lxzzr兄倒是有点不同。
一般人不是更喜欢for吗?为此还多次提醒过文件名有变动时应用dir。
作者: bluewing009    时间: 2009-12-18 23:00

在已知文件名格式时用*和?加上楼上的for做法比较针对。毕竟dir是全部列出,可用面更广
作者: zt404834426    时间: 2009-12-20 17:19

原帖由 Batcher 于 2009-12-18 13:43 发表
@echo off
setlocal enabledelayedexpansion
set n=0
for %%a in ("C:\test\*.gho") do (
    set /a n+=1
    set [!n!]=%%a
)
set [
set /p input=请输入你的选择:
ghost -rb ![%input%]!

“set ["是什么意思??
群里列出了windows下可以比较完美的实现,但是在纯dos下就不能很好的支持,提示语法不正确,希望有高手帮忙改下
群里老大给出的代码:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /a-d /b *.gho') do (
  3.     set /a n+=1&set "_!n!=%%a"
  4.     set /p=!n! %%a <nul&echo.
  5. )
  6. echo.&echo.&set /p select=请输入序号:
  7. echo.&echo 你选择的是!_%select%!
  8. pause>nul
复制代码

作者: Batcher    时间: 2009-12-20 22:46     标题: 回复 6楼 的帖子

你为什么在最开始提问的时候不说清楚是需要在DOS系统里面运行呢?
作者: zt404834426    时间: 2009-12-21 12:57

抱歉,没考虑到,windows和dos的使用方法不一样!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2