soritose
Goto Top

Ab einer bestimten stelle alles weg lassen

hallo

ich habe ein Problem

ich versuche bei ein title was weg zu lassen

Beispiel der title heilst so

das.soll.stehen.bleiben.SSSEEE.und.das.soll.weg

alles was vor den SSSEEE ist soll ausgegeben werden das andere alles nicht mehr

ich habe es bis jest immer so gemacht


set var1=%var2:.SS=^& echo.SS%

echo %var2%

dann gibt er mir das aus

das.soll.stehen.bleiben
SSSEEE.und.das.soll.weg

mach ich dann
Echo %var2% > text.txt
schreibt er nur das in die txt Datei rein
SSSEEE.und.das.soll.weg

ich brauch aber den ersten Bereich

die läge ändert sich immer ist also nicht 12 zeichnen lang oder so mal 5 mal 20 Mal 15

kann mir da wer helfen

ach so ich benutze windows server 2008

Content-ID: 226533

Url: https://administrator.de/contentid/226533

Ausgedruckt am: 24.11.2024 um 05:11 Uhr

pieh-ejdsch
pieh-ejdsch 13.01.2014 um 18:32:04 Uhr
Goto Top
Moin soritose,

für Code nehmen wir hier immer die passenden Formatierungen:
<code type=plain>Codezeile und weiteres
damit es entsprechend lesbar ist
Codezeile      und      weiteres

Zum Umbenennen von Dateien reicht ein bzw mehrmals:
ren *SSSEEE.* *.
Für Variablenkürzung nimmst Du:
 rem zur Ausgabe
@echo %var:.SSSEEE=&::%
 rem zum Umbenennen
ren %var% %var:.SSSEEE=&::%
 rem zum setzen der Variable
set var2=%var:.SSSEEE=&::%
 rem zum Eintrag in Dateien
>test.txt echo %var:.SSSEEE=&::%

Gruß Phil
soritose
soritose 13.01.2014 um 19:27:43 Uhr
Goto Top
danke Phil hat super geklappt

jest ne frage am Rande kann man in den variabel ne variabel rein setzen z.b


ren %var1:%test-var%=&::%


wen ja wie mach ich das
Endoro
Endoro 13.01.2014 um 21:16:54 Uhr
Goto Top
Hey,

das geht auch, zwei Code Konstrukte sind möglich:
@ECHO OFF &SETLOCAL
set "var1=Sommerwetter"  
set "var2=Winter"  
set "var3=Sommer"  
call set "var4=%%var1:%var3%=%var2%%%"  
echo %var4%
setlocal enabledelayedexpansion
set "var5=!var4:%var2%=%var3%!"  
echo %var5%
Winterwetter
Sommerwetter
Gruss.
soritose
soritose 05.12.2015 um 17:13:41 Uhr
Goto Top
Hallo

ich weis das Tema ist alt ich auch
habe da noch eine frage zu den Tema

@echo %var:.S??E??=&::% 

da ich nicht immer genau weis was da zwischen ist entweder, mansch mal es zahlen oder Buchstaben.
Mach ich das so Trent er mir immer nach den Esten s alles ab
@echo %var:.S=&::% 

ist es möglich da Platzhalter ein zu bauen wen ja wie mach ich das
Endoro
Endoro 07.12.2015 um 23:32:40 Uhr
Goto Top
Hey,
sieht aus, als ob du Serienvideos bearbeiten willst. Nenn doch am besten mal ein paar Beispiele nach dem Muster "bestehender Input"-->"gewünschter Output". Übrigens: wenn du dich hier an eine alten Thread anhängst wird das niemand mitbekommen, der hier nicht mitgeschrieben hat. Mach im Zweifel einen neuen Thread auf.

Gruß, Endoro
pieh-ejdsch
pieh-ejdsch 10.12.2015 aktualisiert um 22:32:52 Uhr
Goto Top
moin soritose,

das verwenden von Platzhaltern in der Variablenerweiterung ist nur am Anfang möglich.

Das Script gibt Dir die passende Kürzung der Zeichenfolge.
Eine Hilfe ist enthalten.
@echo off
:: CUTwithWildcards.cmd
:noOption
if "%~1" neq "" goto :nohelp  
echo Gibt eine Ausgabe ohne die angebene Zeichenfolge.
echo Der Rest wird abgeschnitten.&echo(
echo %~n0 "Zeichenfolge" B n E [/i] &echo(  
echo    Zeichenfolge	String zum Durchsuchen
echo    B	Zeichen Wonach am Anfang gesucht wird
echo    n	Auszulassende Zeichenanzahl
echo    E	Zeichen was das Ende der Zeichen Bestimmt
echo    /i	Case intensive
exit /b
:nohelp
setlocal disabledelayedexpansion
set  "Original=%~1"  
set     "Begin=%~2"  
set /a    Excl=%~3 ||echo Syntaxfehler.>&2 &&exit /b 1
set       "End=%~4"  
if not defined end echo Syntaxfehler.>&2 &exit /b 1
set   "CaseInt=%~5"  
:: end Setting Input Param
set       "out="  
set      "more="  
call :read Original
if errorlevel 1 echo Zeichenfolge nicht gefunden.>&2
exit /b
:read VarName B # E [/i]
for /f "delims=" %%a in (' cmd /u /von /c "echo  !%~1!"^|find /n %CaseInt% "%Begin%" ') do (  
  if defined out exit /b 0
  for /f "delims=" %%b in (' cmd /u /von /c "echo !%1!"^|more +%Excl%^|find /n %CaseInt% "%End%"^|find "[%%a]" ') do (  
    set "out=1"  
    setlocal enabledelayedexpansion
    set "In=  !Original!"  
    set "In=!In:~,%%a!"  
    echo !In:^~2!
    endlocal
) )
if not defined out exit /b 1 
exit /b

::oneliner for CMDLine
set "Dq=""  
for %i in ("*S??E*") do @set "out=1" &for /f "delims=" %a in ('cmd/u/c "echo  %i"^|find /n "S"') do @if defined out for /f "delims=" %b in ('cmd/u/c "echo %i"^|more +2^|find /n "E"^|find "[%a]"') do @if %a equ %b set "out=" & set in= "%i" &cmd /v/c echo ren "%i" !in:^~0^,%a!!Dq!)  

Als Umsetyung in einer Forschleife in der Kommandozeile zum umbenennen ist es zB so anwendbar:
for %i in (*s??e*) do for /f "delims=" %a in (' CUTwithWildcards "%i" S 2 E ') do echo ren "%i" "%a%~xi"
Es wird nach dem ersten und zweiten Buchstaben gesucht. Die Zahl zwischendurch gibt an wie viele Zeichen als Wildcard behandelt werden sollen.

Gruß Phil