原来
for /f "skip=2 tokens=1 delims=:" %%a in ('%var1%^|more') do (
%var2% %%a: | find/i /v "cd-rom">>alldrivers.txt 后面少了个括号
根据帖子 http://www.cn-dos.net/forum/viewthread.php?tid=40750&fpage=4
我重新拟了个思路:
我想在所有盘符上寻找一个特定文件, 而且以光盘为优先, 为了避免可恶的错误信息, 我根据这儿网友的思路写了以下代码.
@echo on&setlocal EnableDelayedExpansion
set "var1=fsutil fsinfo drives"
set "var2=fsutil fsinfo drivetype"
for /f "skip=2 tokens=1 delims=:" %%a in ('%var1%^|more') do (
%var2% %%a: | find/i "cd-rom">>alldrivers.txt)
for /f "skip=2 tokens=1 delims=:" %%a in ('%var1%^|more') do (
%var2% %%a: | find/i /v "cd-rom">>alldrivers.txt
for /f "tokens=1 delims=:" %%a in (alldrivers.txt) do (
set "str=%%a"
dir !str!: >nul 2>nul
if !ERRORLEVEL! equ 0 (echo !str!>>readydrivers.txt))
echo.&pause&exit
结果并没有生成 readydrivers.txt 文件
于是我把它再简单化如下
@echo off&setlocal EnableDelayedExpansion
set "var1=fsutil fsinfo drives"
set "var2=fsutil fsinfo drivetype"
for /f "skip=2 tokens=1 delims=:" %%a in ('%var1%^|more') do (
%var2% %%a: | find/i "cd-rom">>drivers.txt)
for /f "skip=2 tokens=1 delims=:" %%a in ('%var1%^|more') do (
%var2% %%a: | find/i /v "cd-rom">>drivers.txt
for /f "tokens=1 delims=:" %%a in (drivers.txt) do (echo %%a)
echo.&pause&exit
for /f "tokens=1 delims=:" %%a in (drivers.txt) do (echo %%a) 还是没执行!!
我于是直接在命令符下执行
for /f "tokens=1 delims=:" %a in (drivers.txt) do (echo %a)
结果准确无误. 这是怎么回事??
另, 可否代码再简洁点, 比如不生成临时文件之类的.
再另, "fsutil" 只能在 XP PRO环境由管理员身份执行, 如果想避免这种情况. "fsutil fsinfo drives" 可用外部程序 FINDCD (3.11k)代替, "fsutil fsinfo drivetype" 用DRVTYPES (9.09k) 代替, 只需少量修改下.
[
Last edited by quya on 2008-6-2 at 12:56 PM ]