Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Удаление в строке лишних символов (http://forum.oszone.net/showthread.php?t=288976)

idlazarev_alex@vk 05-10-2014 15:37 2411282

Удаление в строке лишних символов
 
Всем салют! нужен код, который будет в пути к файлу удалять нужное количество символов справа, от файла, т.е допустим есть файл: "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 2411309

Цитата:

Цитата idlazarev_alex@vk
который будет в пути к файлу удалять нужное количество символов справа, »

Код:

%file:~0,-«нужное количество символов справа»%
Цитата:

Цитата idlazarev_alex@vk
т.е допустим есть файл: "X:\nix\win32\start.exe" нужно получить путь "X:\nix" »

Это отнюдь не «удалять нужное количество символов справа».

Цитата:

Цитата idlazarev_alex@vk
Путь \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 2411316

Iska, спасибо!


Время: 00:07.

Время: 00:07.
© OSzone.net 2001-