Войти

Показать полную графическую версию : [решено] Удаление в строке лишних символов


idlazarev_alex@vk
05-10-2014, 15:37
Всем салют! нужен код, который будет в пути к файлу удалять нужное количество символов справа, от файла, т.е допустим есть файл: "X:\nix\win32\start.exe" нужно получить путь "X:\nix", есть код, но как его преобразовать, не могу понять. Путь \win32\start.exe будет всегда такой, но начало и диск могут быть разными.


SetLocal EnableDelayedExpansion
Set file=e:\Temp 1\temp.txt
Set newfile=e:\Temp 1\newtemp.txt

(For /F "tokens=* usebackq delims=" %%a In ("%file%") Do (
Set ta=%%a
Echo !ta:~0,-1!
))>"%newfile%"


Ещё есть код, удаляет пробелы и другие символы подряд, только не могу понять, как подставить:


::Удаляет справа лишние пробелы, или другие подряд идущие символы, заданные переменной %2 (Symbol)
:RTrimSpaces %1-in.String %2-in.Symbol %3-out.String.Variable
Set "%~3="
Set "_String=%~1"
for /L %%C in (0,1,8184) do (
if "!_String:~%%C,1!"=="" Goto ex_RTrimSpaces
if "!_String:~%%C,1!"=="%~2" (if not Defined LastSpace (Set nSpace=%%C& Set LastSpace=true)) else (Set LastSpace=& Set nSpace=)
)
:ex_RTrimSpaces
if Defined nSpace (Set "%~3=!_String:~0,%nSpace%!") else (Set "%~3=!_String!")
Exit /B

Iska
05-10-2014, 16:13
который будет в пути к файлу удалять нужное количество символов справа, »
%file:~0,-«нужное количество символов справа»%

т.е допустим есть файл: "X:\nix\win32\start.exe" нужно получить путь "X:\nix" »
Это отнюдь не «удалять нужное количество символов справа».

Путь \win32\start.exe будет всегда такой, но начало и диск могут быть разными. »
@echo off
setlocal enableextensions enabledelayedexpansion

set sPath=X:\bla-bla-bla\bla-bla-bla\nix\win32\start.exe
set sPartPath=\win32\start.exe
echo !sPath:%sPartPath%=!

endlocal
exit /b 0

idlazarev_alex@vk
05-10-2014, 16:21
Iska, спасибо!




© OSzone.net 2001-2012