dos命令應用之分離路徑和檔名
@echo off
:: 獲取某個路徑格式字串中指定節的字串
:: code by jm 2006-12-11 cmd@xp
set "str=c:\\t est\\abc.txt\\cd &h\\yes ! h"
for /f "tokens=2* delims=\\" %%i in ("%str%") do echo "%%i\\%%j"
pause
goto :eof
@echo off
:: 獲取當前目錄名
:: 當路徑中含有空格、感嘆號、點號、&和~的時候,也能正確提取
set "cd_=%cd%"
:loop
set "cd_=%cd_:*\\=%"
set "cd_tmp=%cd_:\\=%"
if not "%cd_tmp%"=="%cd_%" goto loop
echo "%cd_%"
pause
goto :eof
rem
@echo off
:: 獲取某個路徑格式字串中指定節的字串
:: 通過set把\\替換成用引號括起來的空格,然後用for來提取
:: 通過for迴圈,用shift把指定層次的字串賦給%1
:: 該方案已經能處理帶空格的路徑,最具通用性
:: code by 3742668 2006-10-20 cmx@xp
set file=c:\\ab c\\def\\gh .exe
set file=%file:\\=" "%
call :get 4 "%file%"
pause
goto :eof
:get
for /l %%i in (1,1,%1) do shift
echo %~1
goto :eof
@echo off
:: 獲取指定層次的檔案(夾)名
:: 最後的乙個echo可以換成任何乙個命令
:: 有可能會記錄echo的當前狀態
:: 難點在於去掉最後幾個\\分隔的內容
:: code by 3742668 2006-10-20 cmd@xp
setlocal enabledelayedexpansion
set str=c:\\ab c\\def\\gh .exe
set num=3
for /l %%i in (1,1,%num%) do set "str=!str:*\\=!"
echo %str:\\=&& 2>nul echo%
pause
rem
@echo off
:: 獲取某個路徑格式字串中指定節的字串
:: 通過set把\\替換成用引號括起來的空格,然後用for來提取
:: 該方案具備較大的通用性——除了不能處理帶空格的路徑
:: code by 3742668 2006-10-18 cmx@xp
set file=c:\\abc\\def\\ghi.xyz
set file=%file:\\=" "%
call :get "%file%"
pause
goto :eof
:get
for /f "tokens=3" %%i in (%*) do echo %%~i
goto :eof
@echo off
:: 獲取最後乙個\\之後的字串
:: 利用set來拋棄\\之前的所有字元
:: 該方法最具通用性,擴充套件之後可以獲取任意層次的資料夾名——**比上乙個要長一點
:: code by 3742668 2006-10-18
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
rem
@echo off
:: 分離路徑形式字串中最後乙個\\前後的內容
:: 通過擷取最後乙個\\之後的字串來獲得檔名
:: 該演算法是最保險的,也是最煩瑣的
:: code by jm 2006-10-5 cmd@xp
for /f "delims=" %%i in ("c:\\te st\\test.txt") do (
set route=%%i
set filename=
call :separate
)pause
goto :eof
:separate
if not "%route:~-1%"=="\\" (
set filename=%route:~-1%%filename%
set route=%route:~0,-1%
goto separate
) else (
echo %filename% 所在目錄的路徑為 %route:~0,-1%
)goto :eof
rem
利用cmd解析檔名的乙個
漏洞來獲取檔名
(該漏洞的內容是:只是簡單地把最後乙個\\後的字串當作檔案,把最後乙個點號當作檔名和副檔名的分隔符號)
@echo off
:: code by 3742668 2006-10-18
set file=c:\\abc\\efg\\c
call :print "%file%"
pause
goto :eof
echo %~nx1
goto :eof
rem
@echo off
:: 同樣利用了該漏洞
:: code by jm 2006-10-18
set file=c:\\abc\\efg\\***.***
for "delims=" %%i in ("%file%") do echo %%~nxi
pause
goto :eof
Python基礎之分離檔名和檔案路徑
分離檔名與檔案路徑 import osif name main path e test module log folder path,file name os.path.split path print 需要分離的檔案路徑是 path print n分離後的結果是 print 檔名 file nam...
分離目錄路徑和檔名
5 2 分離目錄路徑和檔名 輸入檔案目錄路徑和檔名,要求分離成目錄路徑和檔名分別輸出 輸入格式 例如 輸入 c windows winhelp.exe 輸出格式 c windows 目錄路徑 winhelp.exe 檔名 輸入樣例 usr bin man 輸出樣例 usr bin man inclu...
常用Dos命令 檔案和資料夾
常見的dos命令 碟符 進入指定磁碟路徑下 操作資料夾 dir 列出當前控制台所在的路徑下的所有檔案以及資料夾。cd 路徑 進入指定的路徑下。cd 回退到上一級目錄。cd 回退到當前路徑下的根目錄。md 資料夾的名字 建立乙個資料夾 rd 資料夾的名字 刪除乙個空資料夾。注意 不能用於刪除非空到的資...