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-Key: 226533

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

Printed on: April 16, 2024 at 22:04 o'clock

Member: pieh-ejdsch
pieh-ejdsch Jan 13, 2014 at 17:32:04 (UTC)
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
Member: soritose
soritose Jan 13, 2014 at 18:27:43 (UTC)
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
Member: Endoro
Endoro Jan 13, 2014 at 20:16:54 (UTC)
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.
Member: soritose
soritose Dec 05, 2015 at 16:13:41 (UTC)
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
Member: Endoro
Endoro Dec 07, 2015 at 22:32:40 (UTC)
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
Member: pieh-ejdsch
pieh-ejdsch Dec 10, 2015 updated at 21:32:52 (UTC)
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