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

[文本处理] 批处理如何获取指定文件的文件名(名称)?

我的a.test.com目录下面有ll.txt p.txt,1.0.0.0.txt
以前的这个目录只有1.0.0.0.txt,用以下代码可以提取到1.0.0.0
  1. for /f "delims=" %%a in ('dir /b /a-d /oN "%FolderName%\*.txt"') do (
  2. set d=%%a
  3. set c=!d:~0,-4!
  4. echo !c!
  5. )
复制代码
现在多增加了几个txt文件,怎么才能拿到1.0.0.0。这个文件会变动。有时候会是1.0.0.1,2.0.0.0
1

评分人数

本帖最后由 flyinnet9 于 2016-3-1 16:53 编辑

回复 12# xxlaila


    如果没有定义变量d,就把排序后的第一个文件名赋值给d
dir /on排序后第一个文件就是1.0.0.0.txt

TOP

回复 11# flyinnet9


    可以了!没有问题了,我测试了 七八次了,在正式服也跑了,
问一下你这个什么意思啊,do if not defined d set d=%%~na

TOP

%PathName%这个变量哪来的?

你还是去掉echo off然后将运行结果发上来看看吧
1

评分人数

TOP

回复 9# flyinnet9


    那个是我自己加的,加上的话我就修改那一个地方,其他地方就不需要修改了。我测试,好像又可以了,我在多测试几下,谢谢你啊

TOP

set c=%d%
echo %c%
以上不需要
7z.exe a %PathName%\%test%\BackUp\"%test%%d%".7z %PathName%\%test%\WebRoot\*

TOP

回复 6# flyinnet9


    这引号没有问题,现在就在用

TOP

回复 5# flyinnet9


   @echo off
Setlocal Enabledelayedexpansion
echo.
set FolderName=D:\WwwRoot\a.test.com\WebRoot
for /f "delims=" %%a in ('dir /b /a-d /oN "%FolderName%\*.txt"') do if not defined d set d=%%~na
set c=%d%
echo %c%
echo.
set test=a.test.com
7z.exe a %PathName%\%test%\BackUp\"%test%%c%".7z %PathName%\%test%\WebRoot\*

这就是我测试的,在提取到1.0.0.0了以后就暂停了,按任意键就退出了

TOP

回复 4# xxlaila


   引号打的有问题吧?

7z.exe a "%PathName%\%test%\BackUp\%report%%d%.7z"

TOP

回复 4# xxlaila


    没看出来和我的脚本有啥关联,发完整脚本看看

TOP

回复  flyinnet9


    谢谢你啊!根据目前的我的需求,这样写出来可以实现,我在测试一下,谢谢,3QS
xxlaila 发表于 2016-3-1 14:35



    测试发现,按照这样写的话,我下面的代码不能执行了,比如这个打包的
echo.---------正在备份网站到-----------------------
set test=a.test.com
7z.exe a %PathName%\%test%\BackUp\"%report%%d%".7z %PathName%\%test%\WebRoot\*

TOP

回复 2# flyinnet9


    谢谢你啊!根据目前的我的需求,这样写出来可以实现,我在测试一下,谢谢,3QS

TOP

  1. for /f "delims=" %%a in ('dir /b /a-d /oN "%FolderName%\*.txt"') do if not defined d set d=%%~na
  2. echo.%d%
复制代码

TOP

返回列表