标题: [文本处理] [已解决]BAT批处理为何不能调用if判断语句里的数值? [打印本页]
作者: iq301 时间: 2014-6-18 22:01 标题: [已解决]BAT批处理为何不能调用if判断语句里的数值?
本帖最后由 iq301 于 2014-6-22 18:22 编辑
以下代码,是我用时间去判断,找出Jun 18这天所有的文件名%%c,然后把%%c的值通过echo的形式指向到vms.txt里,为什么就不能输出ab的动态值呢?麻烦帮忙看下,错在哪里?谢谢
11.txt里面的内容:
-rw-rw-r-- 1 om trmgroup 17290 Jun 7 07:10 005_158_HOST_MSU1111.CL
-rw-rw-r-- 1 om trmgroup 30030 Jun 8 07:10 005_159_HOST_MSU1111.CL
-rw-rw-r-- 1 om trmgroup 22386 Jun 9 07:10 005_160_HOST_MSU1111.CL
-rw-rw-r-- 1 om trmgroup 24024 Jun 11 07:10 005_162_HOST_MSU1111.CL
-rw-rw-r-- 1 om trmgroup 27664 Jun 12 07:10 005_163_HOST_MSU1111.CL
-rw-rw-r-- 1 om trmgroup 159068 Jun 13 11:10 005_164_HOST_MSU1111.CL
-rw-rw-r-- 1 om trmgroup 28210 Jun 18 07:10 005_165_HOST_MSU1111.CL
-rw-rw-r-- 1 om trmgroup 29302 Jun 18 07:10 005_166_HOST_MSU1111.CL
-rw-rw-r-- 1 om trmgroup 32760 Jun 18 07:10 005_167_HOST_MSU1111.CL
-rw-rw-r-- 1 om trmgroup 24206 Jun 18 07:10 005_168_HOST_MSU1111.CL
-rw-rw-r-- 1 om trmgroup 38766 May 30 08:10 006_150_HOST_MSU1111.CL
-rw-rw-r-- 1 om trmgroup 112476 May 31 10:10 006_151_HOST_MSU1111.CL- @echo off&SETLOCAL ENABLEEXTENSIONS
- del g:\bat\test\a.txt
- set ddd=%date:~0,4%%date:~5,2%%date:~8,2%
- set mm=%date:~5,2%
- set dd=%date:~8,2%
-
- if %mm%==01 (set aa=Jan)
- if %mm%==02 (set aa=Feb)
- if %mm%==03 (set aa=Mar)
- if %mm%==04 (set aa=Apr)
- if %mm%==05 (set aa=May)
- if %mm%==06 (set aa=Jun)
- if %mm%==07 (set aa=Jul)
- if %mm%==08 (set aa=Aug)
- if %mm%==09 (set aa=Sep)
- if %mm%==10 (set aa=Oct)
- if %mm%==11 (set aa=Nov)
- if %mm%==12 (set aa=Dec)
-
- for /f "tokens=6,7,9 delims= " %%a in (g:\bat\test\11.txt) do (
- IF %%a EQU %aa% IF %%b EQU %dd% (
- set ab=%%c
- )
- )
-
- echo open 192.168.10.20 >g:\bat\test\vms.txt
- echo user abc abc123 >>g:\bat\test\vms.txt
- echo bin >>g:\bat\test\vms.txt
- echo cd /usr/trm/data/host >>g:\bat\test\vms.txt
- echo lcd c:\users\a\b\c >>g:\bat\test\vms.txt
- echo get !ab! >>g:\bat\test\vms.txt
- echo bye >>g:\bat\test\vms.txt
- endlocal
复制代码
最终想要的结果是:
open 192.168.10.20
user abc abc123
bin
cd /usr/trm/data/host
lcd c:\users\a\b\c
get 005_165_HOST_MSU1111.CL
get 005_166_HOST_MSU1111.CL
get 005_167_HOST_MSU1111.CL
get 005_168_HOST_MSU1111.CL
bye
作者: Batcher 时间: 2014-6-18 22:05
开启变量延迟扩展的命令是:
setlocal enabledelayedexpansion
而不是:
SETLOCAL ENABLEEXTENSIONS
作者: iq301 时间: 2014-6-18 22:10
回复 2# Batcher
。。。。。。。。。。。。。无语了。你看下我后面echo 下调用ab值对吗,能不能输出动态的ab值?
作者: Batcher 时间: 2014-6-18 22:30
回复 3# iq301
在没有正确开启变量延迟扩展的情况下,是不能使用 !ab! 这种格式的。
作者: iq301 时间: 2014-6-18 22:46
检查后代码对了,可是我调用的值只能取到ab的最后的值。不能取动态的所有ab值。
作者: Batcher 时间: 2014-6-18 23:06
回复 5# iq301
你把它放到了for循环外面,当然无法取到所有值了。
作者: PowerShell 时间: 2014-6-18 23:25
手机相机之类,一般有两种管理方法,usb调试和usb-store,
你用 usb-store 模式,产生了盘符,这道题,用脚本,处理起来就简单多了。
作者: Batcher 时间: 2014-6-18 23:32
- @echo off
- setlocal enabledelayedexpansion
- set mm=%date:~5,2%
- set dd=%date:~8,2%
- set /a dd=1%dd% %% 100
-
- if %mm%==01 (
- set aa=Jan
- ) else if %mm%==02 (
- set aa=Feb
- ) else if %mm%==03 (
- set aa=Mar
- ) else if %mm%==04 (
- set aa=Apr
- ) else if %mm%==05 (
- set aa=May
- ) else if %mm%==06 (
- set aa=Jun
- ) else if %mm%==07 (
- set aa=Jul
- ) else if %mm%==08 (
- set aa=Aug
- ) else if %mm%==09 (
- set aa=Sep
- ) else if %mm%==10 (
- set aa=Oct
- ) else if %mm%==11 (
- set aa=Nov
- ) else if %mm%==12 (
- set aa=Dec
- )
-
- >g:\bat\test\vms.txt echo open 192.168.10.20
- >>g:\bat\test\vms.txt echo user abc abc123
- >>g:\bat\test\vms.txt echo bin
- >>g:\bat\test\vms.txt echo cd /usr/trm/data/host
- >>g:\bat\test\vms.txt echo lcd c:\users\a\b\c
- for /f "tokens=6,7,9" %%a in (g:\bat\test\11.txt) do (
- if %%a equ %aa% (
- if %%b equ %dd% (
- >>g:\bat\test\vms.txt echo get %%c
- )
- )
- )
- >>g:\bat\test\vms.txt echo bye
复制代码
作者: apang 时间: 2014-6-19 00:11
- @echo off & setlocal enabledelayedexpansion
- set /a m=(1%date:~5,2%-101)*3, d=1%date:~8,2%-100
- set "s=JanFebMarAprMayJunJulAugSepOctNovDec"
-
- pushd "g:\bat\test\"
- (
- echo,open 192.168.10.20
- echo,user abc abc123
- echo,bin
- echo,cd /usr/trm/data/host
- echo,lcd c:\users\a\b\c
- for /f "tokens=6,7,9" %%a in (11.txt) do (
- if /i "%%a"=="!s:~%m%,3!" if "%%b"=="%d%" echo,get %%c
- )
- echo,bye
- )>vms.txt
- pause
复制代码
作者: iq301 时间: 2014-6-19 00:40
谢谢各位,问题解决了,两个都可以。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |