4 ответов:
@ECHO OFF SETLOCAL set file=C:\Users\l72rugschiri\Desktop\fs.cfg FOR %%i IN ("%file%") DO ( ECHO filedrive=%%~di ECHO filepath=%%~pi ECHO filename=%%~ni ECHO fileextension=%%~xi )не действительно конечно, что вы подразумеваете под отсутствием "функции"
очевидно, что изменение
ECHOдоSETчтобы установить переменные, а не повторять их...посмотреть
forдокументация полный список.
тестовый случай ceztko (для справки)
@ECHO OFF SETLOCAL set file="C:\Users\ l72rugschiri\Desktop\fs.cfg" FOR /F "delims=" %%i IN ("%file%") DO ( ECHO filedrive=%%~di ECHO filepath=%%~pi ECHO filename=%%~ni ECHO fileextension=%%~xi )комментарий : см. комментарий.
вы можете извлечь только путь и имя файла из (1) параметра самой Летучей мыши
%1, или (2) параметр вызова%1или (3) локальное для переменной%%a.
на
HELP CALLилиHELP FORвы можете найти более подробную информацию:%~1-расширение %1 удаление всех окружающих кавычек (")
%~f1-расширяет %1 до полного имени пути
%~d1-расширяет %1 только до буквы диска
%~p1 - разворачивает %1 в путь только
%~n1-расширяет %1 только до имени файла
%~x1-расширяет %1 только до расширения файла
%~s1-расширенный Путь содержит только короткие имена
%~a1-расширяет % 1 до атрибутов файла
%~t1-расширяет %1 до даты / времени файла
%~z1-расширяет %1 до размера файла
а затем попробуйте следующее:
либо передать строку для анализа в качестве параметра a Звоните
call :setfile ..\Desktop\fs.cfg echo %file% = %filepath% + %filename% goto :eof :setfile set file=%~f1 set filepath=%~dp1 set filename=%~nx1 goto :eofили эквивалент, передайте имя файла как локальное для переменной
for %%a in (..\Desktop\fs.cfg) do ( set file=%%~fa set filepath=%%~dpa set filename=%%~nxa ) echo %file% = %filepath% + %filename%
все это работает для меня:
@Echo Off Echo Directory = %~dp0 Echo Object Name With Quotations=%0 Echo Object Name Without Quotes=%~0 Echo Bat File Drive = %~d0 Echo Full File Name = %~n0%~x0 Echo File Name Without Extension = %~n0 Echo File Extension = %~x0 Pause>Nulвыход:
Directory = D:\Users\Thejordster135\Desktop\Code\BAT\ Object Name With Quotations="D:\Users\Thejordster135\Desktop\Code\BAT\Path_V2.bat" Object Name Without Quotes=D:\Users\Thejordster135\Desktop\Code\BAT\Path_V2.bat Bat File Drive = D: Full File Name = Path.bat File Name Without Extension = Path File Extension = .bat
Если вы хотите получить информацию из фактического запущенного файла batchfile, попробуйте это :
@echo off set myNameFull=%0 echo myNameFull %myNameFull% set myNameShort=%~n0 echo myNameShort %myNameShort% set myNameLong=%~nx0 echo myNameLong %myNameLong% set myPath=%~dp0 echo myPath %myPath% set myLogfileWpath=%myPath%%myNameShort%.log echo myLogfileWpath %myLogfileWpath%
Comments