找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25755|回复: 11

【挑战】批处理如何获取冒号开头变量名的值

[复制链接]
发表于 2012-4-13 15:33:21 | 显示全部楼层 |阅读模式
没有挑战的意思;只是问题难度太大,怕是不好解决;
--------------------------------------------------------
我想这类变量名非传统方法可访问,自有其特殊用途;
目前除了set : 这样列出:开头的变量名列表外,好像没办法了
  1. set :var=123456
复制代码
求 用%%,  或者!! 显示:var 变量值的方法
 楼主| 发表于 2012-4-13 15:50:15 | 显示全部楼层
细想之,恐怕无解;
这个~,=,这类特殊字符的替换,一个难度;
发表于 2012-4-13 16:03:40 | 显示全部楼层
本帖最后由 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
复制代码
 楼主| 发表于 2012-4-13 16:09:38 | 显示全部楼层
本帖最后由 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
复制代码
发表于 2012-4-13 16:12:45 | 显示全部楼层
回复 3# neorobin


    用了 if , findstr 没必要
  1. for /f "tokens=1* delims==" %%a in ('set :') do if /i "%%a"==":var" echo %%b
复制代码
发表于 2012-4-13 16:20:35 | 显示全部楼层
回复 4# plp626

这样还得挑战了
发表于 2012-4-24 23:07:37 | 显示全部楼层
想了一下,这类东西不切实际哇,使用时尽量回避
发表于 2012-5-7 04:20:14 | 显示全部楼层
路過
  1. @echo off
  2. set :var=123456
  3. set/a n=:var
  4. echo %n%
  5. pause
复制代码
发表于 2012-7-23 21:03:01 | 显示全部楼层
是么

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

评分

参与人数 2技术 +2 收起 理由
plp626 + 1 很好,这个语法以前未曾重视, 学习之。
CrLf + 1 setlocal disableextensions

查看全部评分

发表于 2012-7-23 21:24:34 | 显示全部楼层
回复 9# Demon
Demon 大哥果然牛人、
有句话说的好啊,多学一点知识,少写几行代码、
发表于 2012-7-24 10:28:21 | 显示全部楼层
回复 9# Demon


    哈哈,好办法,关闭命令扩展从本质上避免了错误解析,一直觉得它是鸡肋,原来可以用在这里
 楼主| 发表于 2012-7-24 13:17:01 | 显示全部楼层
趁这个机会把特殊字符替换研究研究,也许是个突破口。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:08 , Processed in 0.011158 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表