标题: 请教:如何从一个输入的完整路径名,分别取得盘符、目录
[打印本页]
作者: lianjiang2004
时间: 2006-11-25 11:14
标题: 请教:如何从一个输入的完整路径名,分别取得盘符、目录
请教:如何从一个输入的完整路径名,分别取得盘符、目录和文件。
比如,通过键盘输入"f:\12\3456\789.bat",赋给一个变量a,然后从a获得盘符给变量b,目录12\3456给c,789.bat给变量d。
这功能如何实现?谢谢。
作者: lxmxn
时间: 2006-11-25 11:34
@ECHO OFF
SET/P FILEPATH=请输入你的完整路径:
if not defined FILEPATH goto :EOF
for,/f,"tokens=*",%%i,in,(%FILEPATH%),do,(
set a=%%~di
set b=%%~pi
set c=%%~nxi
)
echo %a%
echo %b%
echo %c%
pause
作者: lianjiang2004
时间: 2006-11-25 11:52
多谢回复。可能是我没说清楚。
并不是硬盘上在我输入的完整路径上,存在那个文件。只是把输入的作为一个变量,然后分别获得盘符,路径及文件名赋给其它变量。
相当于 set a=e:\12\3456\789.bat
我想得到:b=e:
c=\12\3456\
d=789.bat
作者: lianjiang2004
时间: 2006-11-25 11:55
多谢,可以了,我加了引号就行了。,(%FILEPATH%)改成,(“%FILEPATH%”)
再次感谢。
实在不好意思,这段代码我看不明白,能不能麻烦你给解释一下?
[
Last edited by lianjiang2004 on 2006-11-25 at 11:59 AM ]
作者: lxmxn
时间: 2006-11-25 13:27
Re : lianjiang2004
这段批处理工作原理:
首先用"set/p"来接受用户的键盘输入,然后将其输入的值赋给变量"FILEPATH",再利用for命令来分析刚刚输入的字符串,即%FILEPATH%的值,依次将它的各个属性赋值给a、b、c,然后显示变量a、b、c的值。
如果对for命令还不怎么熟悉,可以看看for的帮助文档,也可以搜索一下论坛里面的好文章,多看几遍。
作者: lianjiang2004
时间: 2006-11-25 21:00
感觉for好复杂,也很厉害。现在只知道点皮毛。目前只会象下面这种。一定好好学习。有问题,再请教。
--------------------
REM 根据设定文件的盘符+路径文件名(如e:\123\45\sys.gho),变成分区号+路径文件名(1:5:\123\45\sys.gho)。
for /f "delims=: tokens=1,2" %%i in (tools\set.ini) do (
set drive=%%i
set "the_path=%%j"
)
for /f "tokens=2-3" %%i in ('type c:\GHSTSTAT.TXT ^| find "Desc"') do (
if /i "%%i"=="%drive%:" set partition=%%j
)
echo.
echo 当前设置为:%drive%:%the_path% 即%partition%:%the_path%
[
Last edited by lianjiang2004 on 2006-11-25 at 09:05 PM ]
作者: redtek
时间: 2006-11-25 21:19
lxmxn兄的讲解真是热情、耐心,向lxmxn学习~:)
普天之下、cn-dos.net之上就需要像lxmxn兄这么热心的人,创造和谐社会、和谐论坛~:)
作者: electronixtar
时间: 2006-11-26 01:28
Quote: |
cn-dos.net之上就需要像lxmxn兄这么热心的人,创造和谐社会、和谐论坛~:) |
|
呵呵,其实 redtek 也很热心的嘛
作者: ccwan
时间: 2006-11-26 01:38
赞!各位都是古道热肠。
作者: yuan53770
时间: 2010-10-3 00:40
for命令真是要好好看看的,我也是刚看了
作者: sxychxj
时间: 2010-10-5 10:10
看的迷糊