如何用CMD提取一个文件路径的文件名?并赋值 高分送上

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用CMD提取一个文件路径的文件名?并赋值 高分送上相关的知识,希望对你有一定的参考价值。

比如提取 c:\1.txt 这样一个路径 最后的文件名,怎么提取? 不要用什么SET提取最后5个字符什么的,如果是11.txt 那又不是提取不完整, 有人会吗?

使用DOS命令中的dir就可以生成这样的文本文件。下面介绍具体操作方法。

1.以Windows XP操作系统为例,单击“开始|运行”,输入cmd,如图1所示,然后单击“确定”。

图1 开始cmd命令

3.在命令提示符窗口中输入以下命令,如图2所示。

dir d: >c:filelist.txt

图2 用此命令生成列表文件

这样就在C:盘根目录下生成了一个名为“filelist.txt”的文本文件,该文件中即包含D:盘的文件夹列表。

如果希望将D:盘中子目录中的文件和文件夹列表也全部列出来,可以在命令提示符窗口中输入以下命令。

dir d: /s >c:filelist.txt
如果使用下面的命令,即加一个/b,则会生成一个简单的文件名列表,不包括其它信息,这种方法可能更加实用一些。
dir d: /s /b >c:filelist.txt

生成文本文件后,就可以将该文件中的内容拷贝到Excel中以备日后查询,或者将该文件作为一个对象插入到Excel工作表中。这样以后就可以快速找到所需要的文件了。
参考技术A 用dir /b 来显示单纯的文件信息。
如提取C:\下所有文件名:
dir /b c:\
提取C:\Windows子目录下所有文件名:
dir /b c:\windows
若把C:\Windows子目录中所有文件名放到一个文件(c:\ls.txt)中去,可以这样:
dir /b c:\windows >c:\ls.txt
这样,在C盘的根目录中就生成一个文本文件:ls.txt。其中是所有C:\Windows中的文件名。
试试吧。
参考技术B @echo off
:: 获取最后一个\之后的字符串
:: 利用set来抛弃\之前的所有字符
:: 该方法最具通用性,扩展之后可以获取任意层次的文件夹名——代码比上一个要长一点

set file=c:\abc\def\hij.xyz
set str=%file%

:loop
set str=%str:*\=%
echo %str% | findstr /i "\\" >nul && goto loop
echo %file% ---^> %str%
pause追问

set str=%str:*\=%
echo %str% | findstr /i "\\" >nul
这2行我看不懂, 尤其是第一行,一点一点往后剥的?

参考技术C @echo off
:top
echo 请把要提取文件名的文件拖放到此处
set /p file=
for /f "delims=" %%i in ("%file:"=%") do set filename=%%~nxi
echo 文件名为:"%filename%"
pause>nul&cls&goto top
================================================
我经过测试,可以实现一般路径,路径含有空格,文件名含有空格,和文件名含有特殊字符的处理
都可以完美提取出文件名
1,普通路径
请把要提取文件名的文件拖放到此处
D:\OTHER\Bench32.exe
文件名为:"Bench32.exe"

2,路由含有空格
请把要提取文件名的文件拖放到此处
"C:\Documents and Settings\Administrator\桌面\IMG_3985.JPG"
文件名为:"IMG_3985.JPG"

3,文件名含有空格
请把要提取文件名的文件拖放到此处
C:\Documents and Settings\Administrator\桌面\IMG 3983.JPG"
文件名为:"IMG 3983.JPG"

4,文件名含有特殊字符
请把要提取文件名的文件拖放到此处
C:\Documents and Settings\Administrator\桌面\IMG_&3984.JPG"
文件名为:"IMG_&3984.JPG"
参考技术D 我来吧,代码:
@echo off
:top
echo 请把要提取文件名的文件拖放到此处
set /p file=
for /f "delims=" %%i in ("%file:"=%") do set filename=%%~nxi
echo 文件名为:"%filename%"
pause>nul&cls&goto top
=========================================================
无论路径中是否包含空格,还是最终文件名中包含空格,还有最终文件名中包含&都可以完美提取,见如下。
测试结果:

1,普通路径无空格的:
请把要提取文件名的文件拖放到此处
D:\OTHER\Bench32.exe
文件名为:"Bench32.exe"

2,路径有空格的:
请把要提取文件名的文件拖放到此处
C:\Documents and Settings\Administrator\桌面\22.gif"
文件名为:"22.gif"

3,文件名中包含空格字符的:
请把要提取文件名的文件拖放到此处
C:\Documents and Settings\Administrator\桌面\IMG 3983.JPG"
文件名为:"IMG 3983.JPG"

4,文件名中包含&特殊字符的
请把要提取文件名的文件拖放到此处
C:\Documents and Settings\Administrator\桌面\IMG_&3984.JPG"
文件名为:"IMG_&3984.JPG"

以上四种常见情况都能完全提取。

windows下如何用cmd命令解压指定的zip文件到指定目录下

"c:\Program Files\WinRAR\winrar.exe" x d:\aa.zip d:\abc 这个命令试过,不行。最好是不要安装软件的。系统自带的命令最好,expand命令也试过,好像只能解压makecab压缩的
这个是用winrar解压提示的错误

我自己解决了,是找不到abc这个文件夹

    复制RAR.exe和UNRAR复制到c:\\windows文件夹中。

    按win+r,输入cmd,点击确定。

    提示符后输入:unrar e 压缩文件路径\\名称 解压后路径,如下图:

    效果如下图:

拓展回答:

实用命令:

    命令m 表示移动(压缩后,删除源文件)。

    命令a 表示添加压缩。

    命令s 表示创建自解压文件。

实用开关:

    -r 含子文件夹。

    -ai 忽略文件属性。

    -cl 文件名小写。

    -cu 文件名大写。

    -ed 忽略空文件夹。

    -ep 忽略路径信息。

    -ep1 表示忽略被压缩的根文件夹。

    -ep2 包含最完整路径信息(除驱动器)。

    -df 表示压缩后删除源文件。

    -dr 删除源文件到回收站。

    -or 自动重命名同名文件,例如filename.txt filename(1).txt filename(2).txt。

参考技术A

1、按win键+R打开,或者在开始菜单选择运行。输入cmd,然后确定。

2、确定后,可以看到命令符界面。默认位置是在Windows登录的用户下面。

3、输入“D:”,然后回车,进入D盘根目录下面。

4、使用cd命令,进入test文件夹下面。输入“cd  test”,然后回车。可以看到已经在test文件夹下面。

5、可以使用dir命令,查看当然文件夹下面的所有文件。可以看到我们要删除的ac文件。

6、使用del命令删除文件,输入“del ac.contact”(.contact是文件后缀名,后缀不能少),然后回车,ac文件已经删除。

注意事项:

通过CMD命令进入命令提示符窗口,则将会显示 Windows的版本和版权信息。通过使用CMD命令可以很方便地进入其他子应用程序。CMD是一个32位的命令行程序,运行在 Windows nt2000XP上。

参考技术B 1、运行“CMD”,打开DOS控制台

2、压缩目录test及其子目录的文件内容
Wzzip test.zip test –r -P
WINRAR A test.rar test –r

3、删除压缩包中的*.txt文件
Wzzip test.zip *.txt -d
WinRAR d test.rar *.txt

4、刷新压缩包中的文件,即添加已经存在于压缩包中但更新的文件
Wzzip test.zip test –f
Winrar f test.rar test

5、更新压缩包中的文件,即添加已经存在于压缩包中但更新的文件以及新文件
Wzzip test.zip test –u
Winrar u test.rar test

6、移动文件到压缩包,即添加文件到压缩包后再删除被压缩的文件
Wzzip test.zip –r –P –m
Winrar m test.rar test –r

7、添加全部 *.exe 文件到压缩文件,但排除有 a或b 开头名称的文件
Wzzip test *.exe -xf*.* -xb*.*
WinRAR a test *.exe -xf*.* -xb*.*

8、加密码进行压缩
Wzzip test.zip test –s123。注意密码是大小写敏感的。在图形界面下打开带密码的压缩文件,会看到+号标记。

9、WINRAR A test.rar test –p123 –r。注意密码是大小写敏感的。在图形界面下打开带密码的压缩文件,会看到*号标记。

10、按名字排序、以简要方式列表显示压缩包文件
Wzzip test.zip -vbn
Rar l test.rar

11、锁定压缩包,即防止未来对压缩包的任何修改
无对应命令
Winrar k test.rar

12、创建360kb大小的分卷压缩包
无对应命令
Winrar a –v360 test

13、带子目录信息解压缩文件
Wzunzip test -d
Winrar x test -r

14、不带子目录信息解压缩文件
Wzunzip test
Winrar e test

15、解压缩文件到指定目录,如果目录不存在,自动创建
Wzunzip test newfolder
Winrar x test newfolder

16、解压缩文件并确认覆盖文件
Wzunzip test -y
Winrar x test –y

17、解压缩特定文件
Wzunzip test *.txt
Winrar x test *.txt

18、解压缩现有文件的更新文件
Wzunzip test –f
Winrar x test –f

19、解压缩现有文件的更新文件及新文件
Wzunzip test -n
Winrar x test -u

20、批量解压缩文件
Wzunzip *.zip
WinRAR e *.rar
参考技术C 首先,我们打开命令行。
点击Windows开始菜单,所有程序,附件,命令提示符,
右击图标,点击“以管理员身份运行”(防止命令行权限不够无法执行)

或者按下快捷键Windows+R
输入cmd
回车确定。

在命令行中,输入
WinRAR m -r -ep1 压缩包保存路径 被压缩的文件(夹)路径
然后回车,就可以将被压缩的文件(夹),压缩成一个WinRAR压缩包。
注意,此命令执行后,原来被压缩的文件或者文件夹,就自动删除了!

如果不希望在得到压缩包后,删除原来的文件夹或文件,
可以使用命令
WinRAR a -r -ep1 -df 压缩包保存路径 被压缩的文件(夹)路径

这里,介绍一下这些命令的含义。
WinRAR m -r -ep1 压缩包保存路径 被压缩的文件(夹)路径
等价于
WinRAR a -r -ep1 -df 压缩包保存路径 被压缩的文件(夹)路径
实用命令:
命令m 表示移动(压缩后,删除源文件)
命令a 表示添加压缩
命令s 表示创建自解压文件
实用开关:
-r 含子文件夹
-ai 忽略文件属性
-cl 文件名小写
-cu 文件名大写
-ed 忽略空文件夹
-ep 忽略路径信息
-ep1 表示忽略被压缩的根文件夹
-ep2 包含最完整路径信息(除驱动器)
-df 表示压缩后删除源文件
-dr 删除源文件到回收站
-or 自动重命名同名文件,例如filename.txt filename(1).txt filename(2).txt

下面,我们来看如何使用命令行解压缩文件。
WinRAR x 压缩包路径 解压缩到目标文件夹的路径
解压缩保留路径
WinRAR e 压缩包路径 解压缩到目标文件夹的路径
解压缩忽略路径
忽略路径的意思,就是解压缩时,压缩包原来里面有文件夹的,
解压缩之后,只能得到所有文件,而文件夹没了。

当然,WinRAR的命令行功能,不仅仅支持这么多。有兴趣的,可以打开官方帮助文档详细研读。这里就不再赘述了。
最后,我们来分享一下,如何使用VB(或者VBA)中的Shell命令,来运行WinRAR的命令行,这有助于我们编写程序批量执行一些解压缩或者压缩文件的任务。
如果通过Shell执行,其中“WinRAR”要改为WinRAR安装文件的绝对路径,而在CMD(开始->运行 ->命令提示符)中不需改。
WinRAR安装的绝对路径,一般是(绝对路径中含空格,需要使用双引号引起来):
【Win7系统】"C:\Program Files (x86)\WinRAR\WinRAR.exe"
【Win XP系统】"C:\Program Files\WinRAR\WinRAR.exe"
举个VBA中使用Shell命令示例:
Shell "C:\Program Files (x86)\WinRAR\WinRAR.exe a 压缩包保存路径 被压缩的文件(夹)路径"
参考技术D 有时候有些顽固的文件或者文件夹我们总是让你删除不掉,不要着急其实Win7系统自带的CMD命令就可以很好的解决这个问题,下面小编就为你介绍一下windows7下如何用CMD命令复制和删除文件夹。

如果我要把f盘的file文件夹复制到c盘根目录,如何用cmd命令实现呢?很简单:

xcopy f:file c:file /e

如果要删除呢?也简单:假设删除d盘下的123文件夹

del/s/q d:123*.* ----(用于删除文件夹下的子文件)

rd/s/q d:123 ----(用于删除文件夹)

/s参数为子目录

/q参数为不用确认

删除文件用的是del命令,那么,是不是像ren命令通吃文件和文件夹一样,del是不是也可以删除文件夹呢?

答案是否定的,因为删除文件夹必须使用rd命令,这叫术业有专攻^_^。

rd的另外一个写法是rmdir,源自ReMakeDirectory。使用的方法也很简单:rd 文件夹名 即可,例如:rd test。它支持带路径的文件夹名,例如:rd d:test。

有时候,rd并不能很好地完成任务:你让它删除test文件夹,它却傲慢地向你翻白眼:目录不是空的。不过,这也不能怨它偷懒不干活,只是它的脾气有点怪:如果要删除的文件夹下面还有子文件,你得给rd戴顶高帽,加个 /s 参数,它才会高高兴兴地帮你做事,所以,正确的写法是:rd /s test。

如果你是个彻头彻尾的懒鬼,光是使用 rd /s test ,可能还是对它不甚满意,因为当你在删除带子文件的文件夹的时候,CMD总是不识时务地停下来,殷勤地问你:是否确认(Y/N)?非得等你输个字符敲下回车不可。命苦不能怨政府,点背不能怨社会,谁叫rd有那么大的威力呢,它一旦耍起流氓来,那是谁也拦不住的——rd有风险,删除须谨慎啊。好在微软对那些对删除十分有把握而又懒得要命的家伙体贴入微,提供了一个十分方便的参数 /q ,它取自quiet,官方解释为:安静模式,带 /S 删除目录树时不要求确认。这次再试试:rd /q /s test,真个是:弹指一挥间,灰飞烟灭,是不是有眼不见心不烦的酣畅感?

以上是关于如何用CMD提取一个文件路径的文件名?并赋值 高分送上的主要内容,如果未能解决你的问题,请参考以下文章

高分200!!如何用DOS命令运行程序

求助如何用bat整理文件内容,并输出结果?

windows如何用cmd命令解压指定的zip文件到指定目录里?

cmd获取文件名问题

如何用CMD命令查询进程的具体文件路径?

如何用CMD将当前文件下下面的文件复制到当前文件夹下面的文件夹!用相对路径!