标题: [文件操作] 批处理怎样通过变量扩充获取文件名? [打印本页]
作者: albenlee 时间: 2020-2-16 19:06 标题: 批处理怎样通过变量扩充获取文件名?
有代码如下:- @echo off
- set p="d:\aa.txt"
- rem 此处应该如何写?
- echo %~np
- pause
复制代码
本来的意图是想输出文件名aa,执行效果是一闪而过。
怎么通过变量扩充的方式,并且不在for里边
作者: red2020 时间: 2020-2-17 00:03
变量中转- @echo off
- set p="d:\aa.txt"
- rem 此处应该如何写?
- for %%a in (%p%) do (
- echo;%%~na
- )
- pause
复制代码
作者: Batcher 时间: 2020-2-17 09:40
回复 1# albenlee - @echo off
- set p="d:\aa.txt"
- call :GetName %p%
- pause
- goto :eof
-
- :GetName
- echo %~n1
- goto :eof
复制代码
作者: albenlee 时间: 2020-2-17 10:28
回复 3# Batcher
看来还是得用命令行参数和for变量。
作者: albenlee 时间: 2020-2-17 10:29
回复 2# red2020
我是想不用for和命令行参数
作者: Batcher 时间: 2020-2-17 11:13
回复 5# albenlee
没有你希望的那种用法
作者: m91opse 时间: 2020-2-23 13:26
本帖最后由 m91opse 于 2020-2-23 15:28 编辑
- ::echo指定路径回显指定文件名程序 注释文
- ::@echo off从本行开始关闭回显。一般批处理第一行都是这个
- ::&批处理命令特殊符号 & 连接符号
- ::SETLOCAL ENABLEDELAYEDEXPANSION 延迟变量,全称延迟环境变量扩展
- ::set:设置 local:本地(环境变量)enable:能够 delayed:延迟 expansion:扩展
- ::set local enable delayed expansion 就是扩展本地环境变量延迟
- ::@echo off&SETLOCAL ENABLEDELAYEDEXPANSION
-
- ::set设置变量
- ::p 变量名
- ::d:\aa.txt盘符路径和文件名及扩展名
- ::""双引号用于解释完整路径和文件名及扩展名,同时路径和文件中有特殊字符或者空格,可以识别解释。
- ::set "p=d:\aa.txt"
-
- ::rem命令简介注释命令,在C语言中相当于/*----------*/,它并不会被执行,只是起到一个注释的作用,便于别人及自己将来阅读和维护脚本。
- ::rem是一条命令,在运行的时候相当于把rem本身及其后面的内容置空。既然它是一条命令,就必须处于单独的一行或者有类似“&”的连接符号连接
- ::rem 应该这么写!
-
- ::echo回显命令,后面的我就不知道了?
- ::echo !%%~np!!p:~3,2%!
-
- ::暂停命令
- ::pause
-
- ::以下源程序运行代码
- @echo off&SETLOCAL ENABLEDELAYEDEXPANSION
- set "p=d:\aa.txt"
- rem 应该这么写!
- echo !%%~np!!p:~3,2%!
- pause
复制代码
我不太懂编程的,我这是乱套,套出来的。哈哈哈。
其实,也不是完全套出来的,是大哥的指导
在加上,我查阅的资料
大概,套出这个写法。
定义的变量
echo %p:~6,3% #显示第6个字符以后的3个字符,即aa2
还有 !百度了一下,好像跟%百分号是取变量的值,但是,!感叹号还有个功能好像是变量延迟扩展
SETLOCAL ENABLEDELAYEDEXPANSION 这个也是关于变量延迟的
花了蛮久时间!
我解释的不是很好,本人也是个菜鸟,请问有没有大哥大姐,解释下这个代码,具体运行含义?
但是,编程还是要注意写好注释,不写注释都不是合格的程序员。这话是真的。
就算厉害的程序员老手,不写注释,N年后,他自己也看不懂自己以前写的编程是什么逻辑了?
虽然,写注释麻烦点,但给以后带来很大的便利。比如:查找程序问题,写注释的比没写注释的,查程序错误要快的多。
所以,写编程注释也是一门必修课。
上面的编程注释,如同开篇前言,看了下,就明白下面运行程序,大概什么逻辑意思了。是不是很方便了。
而且,这才是编程注释文,正确编辑方式。
写个注释只是暂时麻烦点,以后就是永久方便了。OK
如果是:程序很多条,还是要写注释,不全部写,但重要的程序地方特别要注释清晰。
重要提示,写注释文,还有个非常重要的好处就是逻辑清晰,而且,还可以防止程序代码多,造成偷跑的严重问题?
偷跑是什么意思,解释下:
偷跑就是,由于程序代码很多,逻辑不清晰,有的程序命令是可以做多个动作的,
而由于逻辑不清晰混乱,这就容易造成,程序即做了你要求的事,
但同时,由于逻辑不清晰混乱又没有条理性,又不写注释增加逻辑清晰和条理性,造成程序在做你的事情后,又做了你不知道的事情,称为偷跑。这是最危险的。
这是编程最大忌讳。
所以,注释文是必须的。解决程序偷跑行为,最好的办法。
所以,上面说不写注释的程序员,都不算合格的程序员,这句话是有道理的。
有的人觉得没什么大不了的,但是,这种事确实存在的。只是看不看到的问题
比如说:千年虫事件。只是说有些类同。让人们惊恐一场,但要是这个错误严重了,那怕是连改的机会都没有。
所以,不如现在就把那些不好的编程习惯,改过来。这才是正确的打开方式。
在这不是说谁的技术不如谁,而是说,纠正错误。
作者: red2020 时间: 2020-2-23 14:46
回复 7# m91opse
不写注释就是耍流氓
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |