| 
 
lianjiang2004 
金牌会员
 
      
 
  
  
积分 3946 
发帖 1884 
注册 2006-1-20 
状态 离线
 | 
『楼 主』:
 请教:如何从一个输入的完整路径名,分别取得盘符、目录
 
使用 LLM 解释/回答一下
  
请教:如何从一个输入的完整路径名,分别取得盘符、目录和文件。 
比如,通过键盘输入"f:\12\3456\789.bat",赋给一个变量a,然后从a获得盘符给变量b,目录12\3456给c,789.bat给变量d。 
这功能如何实现?谢谢。 
 
    
 
  
 |   
 | 
  2006-11-25 11:14 | 
  
 | 
 | 
 
lxmxn 
版主
 
        
 
  
 
积分 11386 
发帖 4938 
注册 2006-7-23 
状态 离线
 | 
『第 2 楼』:
 
 
使用 LLM 解释/回答一下
  
 
 
@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 
  
 
    
 
  
 |   
 | 
  2006-11-25 11:34 | 
  
 | 
 | 
 
lianjiang2004 
金牌会员
 
      
 
  
  
积分 3946 
发帖 1884 
注册 2006-1-20 
状态 离线
 | 
『第 3 楼』:
 
 
使用 LLM 解释/回答一下
  
多谢回复。可能是我没说清楚。 
并不是硬盘上在我输入的完整路径上,存在那个文件。只是把输入的作为一个变量,然后分别获得盘符,路径及文件名赋给其它变量。 
相当于 set a=e:\12\3456\789.bat 
我想得到:b=e: 
               c=\12\3456\ 
               d=789.bat 
 
    
 
  
 |   
 | 
  2006-11-25 11:52 | 
  
 | 
 | 
 
lianjiang2004 
金牌会员
 
      
 
  
  
积分 3946 
发帖 1884 
注册 2006-1-20 
状态 离线
 | 
『第 4 楼』:
 
 
使用 LLM 解释/回答一下
  
多谢,可以了,我加了引号就行了。,(%FILEPATH%)改成,(“%FILEPATH%”) 
再次感谢。 
实在不好意思,这段代码我看不明白,能不能麻烦你给解释一下? 
 
 Last edited by lianjiang2004 on 2006-11-25 at 11:59 AM ] 
 
    
 
  
 |   
 | 
  2006-11-25 11:55 | 
  
 | 
 | 
 
lxmxn 
版主
 
        
 
  
 
积分 11386 
发帖 4938 
注册 2006-7-23 
状态 离线
 | 
 『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
 
  Re : lianjiang2004 
 
  这段批处理工作原理: 
 
  首先用"set/p"来接受用户的键盘输入,然后将其输入的值赋给变量"FILEPATH",再利用for命令来分析刚刚输入的字符串,即%FILEPATH%的值,依次将它的各个属性赋值给a、b、c,然后显示变量a、b、c的值。 
 
  如果对for命令还不怎么熟悉,可以看看for的帮助文档,也可以搜索一下论坛里面的好文章,多看几遍。 
 
 
    
 
 
 
  
 |   
 | 
  2006-11-25 13:27 | 
  
 | 
 | 
 
lianjiang2004 
金牌会员
 
      
 
  
  
积分 3946 
发帖 1884 
注册 2006-1-20 
状态 离线
 | 
『第 6 楼』:
 
 
使用 LLM 解释/回答一下
  
感觉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 ] 
 
    
 
  
 |   
 | 
  2006-11-25 21:00 | 
  
 | 
 | 
 
redtek 
金牌会员
 
      
 
  
  
积分 2902 
发帖 1147 
注册 2006-9-21 
状态 离线
 | 
『第 7 楼』:
 
 
使用 LLM 解释/回答一下
  
lxmxn兄的讲解真是热情、耐心,向lxmxn学习~:) 
普天之下、cn-dos.net之上就需要像lxmxn兄这么热心的人,创造和谐社会、和谐论坛~:) 
 
    
 
  
  |  
                  
  
                        Redtek,一个永远在网上流浪的人…… 
 
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |   
 | 
  2006-11-25 21:19 | 
  
 | 
 | 
 
electronixtar 
铂金会员
 
       
 
  
  
积分 7493 
发帖 2672 
注册 2005-9-2 
状态 离线
 | 
『第 8 楼』:
 
 
使用 LLM 解释/回答一下
  
 
cn-dos.net之上就需要像lxmxn兄这么热心的人,创造和谐社会、和谐论坛~:)  
 
呵呵,其实 redtek 也很热心的嘛  
 
    
 
  
  |  
                  
  
                     
C:\>BLOG http://initiative.yo2.cn/ 
C:\>hh.exe ntcmds.chm::/ntcmds.htm 
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>" |   
 | 
  2006-11-26 01:28 | 
  
 | 
 | 
 
ccwan 
金牌会员
 
      
 
  
 
积分 2725 
发帖 1160 
注册 2006-9-23 来自 河北廊坊 
状态 离线
 | 
 | 
  2006-11-26 01:38 | 
  
 | 
 | 
 
yuan53770 
初级用户
 
  
 
  
  
积分 67 
发帖 40 
注册 2007-11-5 
状态 离线
 | 
 | 
  2010-10-3 00:40 | 
  
 | 
 | 
 
sxychxj 
新手上路
 
 
 
  
  
积分 5 
发帖 4 
注册 2010-9-21 
状态 离线
 | 
 | 
  2010-10-5 10:10 | 
  
 |