DOS批处理命令-引数取得
参数传递对程序来说,是一个很重要的事情,所以,获得传递的参数是很重要的,接下来,我们来探讨下获得传递的参数的N种方式。
1、%N 获得传递的第N个参数(N最大为9)
就是传递过去的参数原样值(并且忽略前后导空格)
@echo off echo %
运行结果为(a.bat canshu)
canshu
2、%~1 也就是说,把第一个参数的引用字符串给去掉(两段的引号),如果只有一侧有的话,就删除有的那一侧。
すべての引用句 (") を削除して、%1 を展開します。
例如:
"1"2"➡1"2 "1"2➡1"2 1"2"➡1"2 1"2➡1"2
@echo off
运行结果:
F:\tmp>a.bat "1"2"
1"2
3、%~f1 获取参数1指定的路径的全路径/如果是只指定文件名的话,就是当前路径 + 参数1表示的全路径名
%1 を完全修飾パス名に展開します。
例如参数1是C:\Users\liuhongying\tmp\test.txt的时候,结果就是C:\Users\liuhongying\tmp\test.txt
例如当前路径是F:\tmp\,传递的参数是1234,那么,得到的结果就是F:\tmp\1234
@echo off echo %~f1
运行结果:
F:\tmp>a.bat C:\Users\liuhongying\tmp\test.txt
C:\Users\liuhongying\tmp\test.txt
F:\tmp>a.bat 1234
F:\tmp\1234
那如果没有参数1的时候呢?输入结果是什么呢?然我们来看看
F:\tmp>a.bat
ECHO は <OFF> です。
也就是说,如果这个参数本身就不存在的时候,取得的东西就是空的了。
4、%~d1 获取参数1指定的路径的盘符名/如果只指定文件名,那么结果就是当前路径的盘符名
%1 をドライブ文字だけに展開します。
例如参数1是C:\Users\liuhongying\tmp\test.txt的时候,结果就是C:
例如当前路径是F:\tmp\,那么得到的结果就是F:
@echo off echo %~d1
运行结果:
F:\tmp>a.bat C:\Users\liuhongying\tmp\test.txt
C:
F:\tmp>a.bat 1234
F:
那如果没有参数1的时候呢?输入结果是什么呢?然我们来看看
F:\tmp>a.bat
ECHO は <OFF> です。
也就是说,如果这个参数本身就不存在的时候,取得的东西就是空的了。
5、%~p1 获取参数1指定的路径的路径名/如果只指定文件名,那么结果就是当前文件的路径名
%1 をパスだけに展開します。
例如参数1是C:\Users\liuhongying\tmp\test.txt的时候,结果就是\Users\liuhongying\tmp\
例如当前路径是F:\tmp\,那么得到的结果就是\tmp\
@echo off echo %~p1
运行结果为:
F:\tmp>a.bat C:\Users\liuhongying\tmp\test.txt
\Users\liuhongying\tmp\
F:\tmp>a.bat 1234
\tmp\
那如果没有参数1的时候呢?输入结果是什么呢?然我们来看看
F:\tmp>a.bat
ECHO は <OFF> です。
也就是说,如果这个参数本身就不存在的时候,取得的东西就是空的了。
6、%~n1 获取参数1指定的路径的文件名/如果只指定文件名,那么结果就是这个文件名
%1 をファイル名だけに展開します。
例如参数1是C:\Users\liuhongying\tmp\test.txt,那么路径的文件名是test
@echo off echo %~n1
运行结果:
F:\tmp>a.bat C:\Users\liuhongying\tmp\test.txt
test
F:\tmp>a.bat test.txt
test
7、%~x1 就是表示文件的扩展名(包括分隔符的句点)
%1 をファイル拡張子だけに展開します。
@echo off echo %~x1
运行结果
F:\tmp>a.bat C:\Users\liuhongying\tmp\test.txt
.txt
F:\tmp>a.bat test.txt
.txt
8、%~s1 获取指定路径的短路径
展開されたパスは、短い名前だけを含みます。
什么短路径呢?短路径就是使用一种命名规范来缩短表示路径的长度。
短路径名实在DOS下的命名规则
在DOS中,主文件名的长度不能超过8个字符
如果超过了8个 系统自动截取前6个字符,然后加上~1
如果前6个字符一样了,那么路径名就按照字符串排序,然后就依次使用~2,~3
例如路径名为C:\Users\liuhongying\tmp\test.txt短路径就是C:\Users\LIUHON~1\tmp\test.txt
@echo off echo %~s1
运行结果
F:\tmp>a.bat C:\Users\liuhongying\tmp\testtesttest.txt
C:\Users\LIUHON~1\tmp\testtesttest.txt
由此看来,短路径只是缩短路径部分。
9、%~a1 获取参数1指定的文件的属性(如果文件不存在,结果就是空的)
%1 をファイル属性に展開します。
@echo off echo %~a1
运行结果
F:\tmp>a.bat C:\Users\liuhongying\tmp\test.txt
--a--------
*这里a代表的是存档文件属性,具体还有什么别的,在那个位置,如果以后有用到在总结吧。
10、%~t1 获得文件的更新日期和时间
%1 をファイルの日付/時刻に展開します。
@echo off echo %~t1
运行结果
F:\tmp>a.bat C:\Users\liuhongying\tmp\test.txt
2013/07/27 01:38
11、%~z1 获得参数1指定文件的大小(byte数)
%1 をファイルのサイズに展開します。
@echo off echo %~z1
运行结果
F:\tmp>a.bat C:\Users\liuhongying\tmp\test.txt
17
12、%~$PATH:1 在path指定的路径中检索参数1指定的文件,如果找到了就返回全路径,否则,就返回空。
@echo off set PATH=C:\Users\liuhongying\tmp\
执行结果
F:\tmp>a.bat test.txt
C:\Users\liuhongying\tmp\test.txt
@echo off set PATH=C:\Users\liuhongying\
执行结果
F:\tmp>a.bat tmp\test.txt
C:\Users\liuhongying\tmp\test.txt
由此可见,即path + 参数1拼成的字符串指定的文件如果存在,就返回该全路径。
F:\tmp>a.bat test.txt
ECHO は <OFF> です。
由以上运行结果可以看出,检索不包括下层目录。可以进一步验证上一个验证结果。
获取参数值的地方已经分析完了。
不过,这些方法可以有很多种组合方式。进一步的应用就要看你使用的灵活性了。
DOS批处理命令-引数取得的更多相关文章
- DOS批处理命令判断操作系统版本、执行各版本对应语句
DOS批处理命令判断操作系统版本.执行各版本对应语句 昨天在家里试用 netsh interface ip set address 这些命令更改上网IP.DNS.网关等,今天将那些代码拿来办公室 ...
- DOS批处理命令递归删除给定的文件(夹),兼VC工程清理小工具
使用dos批处理命令递归删除指定的文件(夹): (下面内容针对清理VC工程!自己按说明任意修改) 2014-06-10修改:删除前增加了[y,n]询问: echo off rem 递归删除当前文件下指 ...
- DOS批处理命令-call命令
call命令 在批处理中调用别的批处理或者可运行程序或者 バッチ プログラムを別のバッチ プログラムから呼び出します. 语法 1.CALL [驱动盘符:][路径]文件名 [参数] 调用并执行[驱动盘符 ...
- DOS批处理命令-if语句
IF语句是批处理中执行的条件分歧处理. 批处理中,IF分歧的写法有好几种,接下来,我们来一个一个的分析IF语法的结构. 1.IF [NOT] ERRORLEVEL 番号 批处理命令 当ERRORLEV ...
- DOS批处理命令-几个固定名称的变量
批处理中有一些变量的变量名称是固定的,具有特定的意义,接下来,我们来看看这些有特定意义的变量到底有什么意义. 1.%CD% 当前路径的路径名[盘符 + 路径] - 現在のディレクトリ文字列に ...
- DOS批处理命令-@命令
@命令是一个禁止当前语句回显的简单命令. 语法: @[command].[command]是要屏蔽的批处理命令 例如执行包含以下内容的bat文件 echo on @echo ------- @echo ...
- cocos2d-x教程3:用php或DOS批处理命令来转换文件和解压缩zip
在cocos2d-x使用中,须要不停的转换文件和压缩或解压文件.假设全人工来做,太麻烦了,且easy出错. 我如今把一些用的到批处理贴出来,供大家使用 自己主动把dat文件按数字排序重命名gz.DOS ...
- DOS 批处理命令For循环命令详解
for命令是一种对一系列对象依次循环执行同一个或多个命令的在命令行或批处理中运行的命令,结合一些Windows管理中的程序后,其处理功能强大.应用灵活方便程度令人刮目相看 for命令是一种对一系列 ...
- DOS批处理命令-for语句
for是为了循环执行一系列命令而执行的命令语句. for要处理的内容不同,语法结构稍有不同.下面就各种情形来分别 1.基本的语法:FOR %変数 IN (set) DO 命令 [参数] 语法内容解析: ...
随机推荐
- Docker基本命令
1.搜索Docker镜像 docker search <镜像名> 2.获取镜像 docker pull <镜像名> 3.查看本地镜像 docker images 4.删除镜像 ...
- ubuntu为IDE(Eclipse WebStorm)添加桌面快捷方式
在ubuntu15.10环境配置webstorm和eclipse的时候会下载官网上编译好的包, bin目录下面会有一个.sh文件(linux版本), 那么一般情况下,执行 ./sh就会启动IDE, 但 ...
- DNS添加/修改/查询/删除A记录
#查询DNS可用类 Get-WmiObject -Namespace root\MicrosoftDNS -List #查询所有资源记录 $mydns = [WMIClass]"ROOT\M ...
- 一个奇怪的html上url参数问题
今天踩了一个坑 如xxx.com/xxx/xxx?code=+adfdf 我需要拿到 code=+adfdf 但是后台拿到的是 adfdf, 后来只能对 code的值进行 urlencode处理了
- 关于android 将对象写入文件以及从文件读取对象
由于项目需求,需要保存用户登录过的一些配置,当下次登录的时候读取登录过的配置,所以简单的SharePreferences没有办法满足,于是找到了Java中ObjectInputStream 与 Obj ...
- iOS开发——UI_swift篇&TableView自定义聊天界面
TableView自定义聊天界面 1,下面是一个放微信聊天界面的消息展示列表,实现的功能有: (1)消息可以是文本消息也可以是图片消息 (2)消息背景为气泡状图片,同时消息气泡可根据内容自适应大小 ...
- Jquery-Ajax常用总结
1.方式一:访问.aspx 客户端: function Del(Id) { if (confirm("确认要删除?")) { $.ajax({ type: "Post&q ...
- phpstorm 和web storm汉化
http://www.jincaimao.com/cms-phpstorm-index.html phpStorm汉化方法: B1).找到X:\Program Files\JetBrains\PhpS ...
- as3中使用stage ,root ,this 区别详解
stage:最顶层舞台root:stage的下一级舞台,属于第二层舞台(继承自DisplayObject)this:当前的对象(如果是主时间轴上的this,那它就是root) 继承方面:Stage - ...
- TCP/IP协议原理与应用笔记18:构成子网和超网
1. 引言: (1)类别IP编址(Classful IP)的缺陷 • 固定的3种IP网络规模 C类地址:少于255台主机的网络 B类地址:介于255~65535台主机的网络 ...