Board logo

标题: for 语句 分配多个变量的问题 [打印本页]

作者: icebat     时间: 2010-11-17 13:48    标题: for 语句 分配多个变量的问题

--------------------------------------------------
for /f "tokens=1 delims=:" %%o in (%temp%\test2.tmp) do (
echo "%%~o"
echo "%%~p"
)
--------------------------------------------------
我想把找到的结果分成 2个,储存在变量O 和P 里面,不行啊,请指点下

test2.tmp 里面的内如如下
-----------------------------------
c:
d:
------------------------------------
现在我明白了,原来是以一行为整体来分隔,不能分割到下一行。
不用skip  ,怎么才能 把这两个路径分别分配到两个变量上?
作者: huahua0919     时间: 2010-11-17 14:14

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (test2.tmp) do (
        set /a n+=1
        if !n! equ 1 (set O=%%i) else (set P=%%i)
)
echo.%O%
echo.%P%
pause

作者: icebat     时间: 2010-11-17 14:23
for /f "tokens=1" %%b in ('findstr /i "可移动驱动器" "%temp%\test1.tmp"') do (
echo "%%b" >>"%temp%\test2.tmp"
ren "%temp%\test2.tmp" test3.tmp
)

for /f "tokens=1" %%p in (%temp%\test2.tmp) do (
set var=%%~p
)

for /f "tokens=1" %%o in (%temp%\test3.tmp) do (
set var2=%%~o
)
echo %var2%
echo %var%


这是我自己的解决方法, 但是觉得不太好。

楼上大哥比我这个好一些,我觉得还是不够完美,还有没有其他的方法啊。
作者: wewebb     时间: 2010-11-17 21:29

Rem 类似数组的变量
@echo off & Setlocal EnableDelayedExpansion
for /f %%a in ('findstr ":" "%temp%\test2.tmp"') do (
        set /a n+=1
        set "Drv[!n!]=%%a"
)
echo 共有 !n! 个盘符。盘符变量分别保存在 Drv[1]  ---   Drv[!n!] 变量中
pause
[ Last edited by wewebb on 2010-11-17 at 21:35 ]