[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎样通过变量扩充获取文件名?

有代码如下:
  1. @echo off
  2. set p="d:\aa.txt"
  3. rem 此处应该如何写?
  4. echo %~np
  5. pause
复制代码
本来的意图是想输出文件名aa,执行效果是一闪而过。
怎么通过变量扩充的方式,并且不在for里边
一起学习交流

变量中转
  1. @echo off
  2. set p="d:\aa.txt"
  3. rem 此处应该如何写?
  4. for %%a in (%p%) do (
  5. echo;%%~na
  6. )
  7. pause
复制代码

TOP

回复 1# albenlee
  1. @echo off
  2. set p="d:\aa.txt"
  3. call :GetName %p%
  4. pause
  5. goto :eof
  6. :GetName
  7. echo %~n1
  8. goto :eof
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# Batcher
看来还是得用命令行参数和for变量。
一起学习交流

TOP

回复 2# red2020
我是想不用for和命令行参数
一起学习交流

TOP

回复 5# albenlee


    没有你希望的那种用法
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 m91opse 于 2020-2-23 15:28 编辑
  1. ::echo指定路径回显指定文件名程序 注释文
  2. ::@echo off从本行开始关闭回显。一般批处理第一行都是这个
  3. ::&批处理命令特殊符号 & 连接符号
  4. ::SETLOCAL ENABLEDELAYEDEXPANSION 延迟变量,全称延迟环境变量扩展
  5. ::set:设置 local:本地(环境变量)enable:能够 delayed:延迟 expansion:扩展
  6. ::set local enable delayed expansion 就是扩展本地环境变量延迟
  7. ::@echo off&SETLOCAL ENABLEDELAYEDEXPANSION
  8. ::set设置变量
  9. ::p 变量名
  10. ::d:\aa.txt盘符路径和文件名及扩展名
  11. ::""双引号用于解释完整路径和文件名及扩展名,同时路径和文件中有特殊字符或者空格,可以识别解释。
  12. ::set "p=d:\aa.txt"
  13. ::rem命令简介注释命令,在C语言中相当于/*----------*/,它并不会被执行,只是起到一个注释的作用,便于别人及自己将来阅读和维护脚本。
  14. ::rem是一条命令,在运行的时候相当于把rem本身及其后面的内容置空。既然它是一条命令,就必须处于单独的一行或者有类似“&”的连接符号连接
  15. ::rem 应该这么写!
  16. ::echo回显命令,后面的我就不知道了?
  17. ::echo !%%~np!!p:~3,2%!
  18. ::暂停命令
  19. ::pause
  20. ::以下源程序运行代码
  21. @echo off&SETLOCAL ENABLEDELAYEDEXPANSION
  22. set "p=d:\aa.txt"
  23. rem 应该这么写!
  24. echo !%%~np!!p:~3,2%!
  25. pause
复制代码
我不太懂编程的,我这是乱套,套出来的。哈哈哈。
其实,也不是完全套出来的,是大哥的指导
在加上,我查阅的资料
大概,套出这个写法。
定义的变量
echo %p:~6,3%          #显示第6个字符以后的3个字符,即aa2
还有 !百度了一下,好像跟%百分号是取变量的值,但是,!感叹号还有个功能好像是变量延迟扩展
SETLOCAL ENABLEDELAYEDEXPANSION 这个也是关于变量延迟的
花了蛮久时间!
我解释的不是很好,本人也是个菜鸟,请问有没有大哥大姐,解释下这个代码,具体运行含义?

但是,编程还是要注意写好注释,不写注释都不是合格的程序员。这话是真的。
就算厉害的程序员老手,不写注释,N年后,他自己也看不懂自己以前写的编程是什么逻辑了?
虽然,写注释麻烦点,但给以后带来很大的便利。比如:查找程序问题,写注释的比没写注释的,查程序错误要快的多。
所以,写编程注释也是一门必修课。
上面的编程注释,如同开篇前言,看了下,就明白下面运行程序,大概什么逻辑意思了。是不是很方便了。
而且,这才是编程注释文,正确编辑方式。
写个注释只是暂时麻烦点,以后就是永久方便了。OK
如果是:程序很多条,还是要写注释,不全部写,但重要的程序地方特别要注释清晰。

重要提示,写注释文,还有个非常重要的好处就是逻辑清晰,而且,还可以防止程序代码多,造成偷跑的严重问题?
偷跑是什么意思,解释下:
偷跑就是,由于程序代码很多,逻辑不清晰,有的程序命令是可以做多个动作的,
而由于逻辑不清晰混乱,这就容易造成,程序即做了你要求的事,
但同时,由于逻辑不清晰混乱又没有条理性,又不写注释增加逻辑清晰和条理性,造成程序在做你的事情后,又做了你不知道的事情,称为偷跑。这是最危险的。
这是编程最大忌讳。
所以,注释文是必须的。解决程序偷跑行为,最好的办法。
所以,上面说不写注释的程序员,都不算合格的程序员,这句话是有道理的。
有的人觉得没什么大不了的,但是,这种事确实存在的。只是看不看到的问题
比如说:千年虫事件。只是说有些类同。让人们惊恐一场,但要是这个错误严重了,那怕是连改的机会都没有。
所以,不如现在就把那些不好的编程习惯,改过来。这才是正确的打开方式。
在这不是说谁的技术不如谁,而是说,纠正错误。

TOP

回复 7# m91opse

不写注释就是耍流氓

TOP

返回列表