Board logo

标题: 【挑战】批处理如何获取冒号开头变量名的值 [打印本页]

作者: plp626    时间: 2012-4-13 15:33     标题: 【挑战】批处理如何获取冒号开头变量名的值

没有挑战的意思;只是问题难度太大,怕是不好解决;
--------------------------------------------------------
我想这类变量名非传统方法可访问,自有其特殊用途;
目前除了set : 这样列出:开头的变量名列表外,好像没办法了
  1. set :var=123456
复制代码
求 用%%,  或者!! 显示:var 变量值的方法
作者: plp626    时间: 2012-4-13 15:50

细想之,恐怕无解;
这个~,=,这类特殊字符的替换,一个难度;
作者: neorobin    时间: 2012-4-13 16:03

本帖最后由 neorobin 于 2012-4-13 16:05 编辑
  1. for /f "tokens=1* delims==" %%a in ('set :^|findstr /i "^:var"') do if /i "%%a"==":var" echo %%b
复制代码

作者: plp626    时间: 2012-4-13 16:09

本帖最后由 plp626 于 2012-4-13 16:12 编辑

回复 3# neorobin
  1. cmd/v
  2. set $0a=^
  3. set :var=!$0a!123456
  4. set :
  5. echo ----------------------
  6. set :var|findstr /ib :var
复制代码

作者: neorobin    时间: 2012-4-13 16:12

回复 3# neorobin


    用了 if , findstr 没必要
  1. for /f "tokens=1* delims==" %%a in ('set :') do if /i "%%a"==":var" echo %%b
复制代码

作者: fatcat    时间: 2012-4-13 16:20

回复 4# plp626

这样还得挑战了
作者: applba    时间: 2012-4-24 23:07

想了一下,这类东西不切实际哇,使用时尽量回避
作者: Taurus    时间: 2012-5-7 04:20

路過
  1. @echo off
  2. set :var=123456
  3. set/a n=:var
  4. echo %n%
  5. pause
复制代码

作者: Demon    时间: 2012-7-23 21:03

是么
  1. @echo off
  2. set :var=123456
  3. setlocal disableextensions
  4. echo %:var%
  5. pause
复制代码

作者: 乱码    时间: 2012-7-23 21:24

回复 9# Demon
Demon 大哥果然牛人、
有句话说的好啊,多学一点知识,少写几行代码、
作者: CrLf    时间: 2012-7-24 10:28

回复 9# Demon


    哈哈,好办法,关闭命令扩展从本质上避免了错误解析,一直觉得它是鸡肋,原来可以用在这里
作者: plp626    时间: 2012-7-24 13:17

趁这个机会把特殊字符替换研究研究,也许是个突破口。。。




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