batchcrack
Goto Top

Pfad einer Datei Kopieren (Batch)?

Hallo, ich bin neu im Bereich Batch und hätte eine Frage.. Also ich programmiere im moment an einer Datei die eine Datei auf dem Pc sucht und dann denn Pfad kopiert, dann zum Pfad navigiert und alle dateien im entsprechenden Ordner löscht. Soweit so gut..

Das Skript sieht im moment noch so aus:

chcp 65001 >nul

set "fileToSearch=Program.exe"  
   
set "desinationPath=j:\copied"  
   
md "%desinationPath%" 2>nul  


for /f "usebackq skip=1 tokens=1 delims=:" %%a in (`wmic logicaldisk where "DriveType=3" get name ^| findstr /r /v "^$" `) do (  
    echo Überprüfung %%a: ...
      
    for /f "tokens=*" %%f in ('dir /s /b /a:-d "%%a:\%fileToSearch%"') do (  
        echo Datei gefunden:  %%f
        set "%%f=path"  
          
        md "%desinationPath%\%%~a%%~pf"  
        echo Zieldatei: "%desinationPath%\%%~a%%~pnxf"  
        copy "%%~f" "%desinationPath%\%%~a%%~pf*.*"  
    )
)
pause
if NOT [%CD%] == [%path%] cls && call :xcolor 04 "Ein unbekannter Fehler ist aufgetreten!" 1 && call :xcolor "Starte das Program neu!" && echo. && pause >nul && exit  
cd %path%
del *

Aber als Variable kommt zum beispiel
path = C:\Beispiel\Program.bat

Also wie bekomme ich das Program.bat weg so das da nur C:\Beipiel\ als Variable raus kommt

Mfg

Content-Key: 652530

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

Printed on: April 24, 2024 at 05:04 o'clock

Member: Doskias
Doskias Feb 16, 2021 at 10:20:20 (UTC)
Goto Top
Moin,

also davon abgesehen, dass du doch eigentlich alles vorliegen hast, gestatte mir doch bitte die Frage, wieso du jetzt noch anfängst dich mit Batch zu beschäftigen. Wir leben im Jahr 2021 und wenn man jetzt neu anfängt, würde ich stets PowerShell empfehlen. Die Möglichkeiten in Powershell sind einfach vielseitiger. Nur als Vergleich:

Eine Datei zu suchen und den Ordner in dem Sich die Datei befindet zu löschen, ist in Powershell nicht länger als 3 bis 5 Zeilen. Je nachdem wie Flexibel du das Skript halten möchtest und ob es protokolliert werden soll. Das suchen und löschen ist eine Zeile.

Gruß
Doskias

Tipp um dein Problem zu lösen. du hast in Zeile 3 doch den Namen der Datei schon angegeben. Den must du jetzt nur noch aus deinem Path rausnehmen und fertig.
Member: batchcrack
batchcrack Feb 16, 2021 at 10:24:33 (UTC)
Goto Top
Also das Skript hab ich von nehm Freund der sich damit sehr gut auskennt und ich wollte damit halt auch mal anfangen und hab da auch schon so nh bisschen was gelernt und wollte halt mal fragen wie das geht.. Ist klar das das jetzt nicht so viel bringt das jetzt zu lernen aber ist mir egal will einfach bisschen dazu lernen :3
Member: Doskias
Doskias Feb 16, 2021 at 10:31:32 (UTC)
Goto Top
Zitat von @batchcrack:

Also das Skript hab ich von nehm Freund der sich damit sehr gut auskennt und ich wollte damit halt auch mal anfangen und hab da auch schon so nh bisschen was gelernt und wollte halt mal fragen wie das geht..
Also ein Neuling im Bereich Batch mit dem Namen Batchcrack.

Ist klar das das jetzt nicht so viel bringt das jetzt zu lernen aber ist mir egal will einfach bisschen dazu lernen :3
Was neues zu lernen ist nie falsche, aber aber wieso nicht gleich was neues. Bei Powershell lernst du viel mehr. Und wen du was neues lernen willst, dann schreib das Skript selbst und lass es dir nicht vom Freund geben. Und wenn du mit dem Skript deines Freundes nicht klar kommst, dann frag deinen Freund.

Sorry, das soll nicht unhöflich klingen, aber ich bin es leid, dass Leute hier ihr Skript reinposten, was sie von irgendwem haben, es nicht verstehen, nicht ändern können und eine fertige Lösung suchen. Du wirst dafür bezahlt deinen Job zu machen, wir nicht um dir zu helfen.

Gruß
Doskias
Member: rubberman
rubberman Feb 16, 2021 updated at 17:00:12 (UTC)
Goto Top
PATH ist eine vordefinierte Variable die du besser nicht überschreibst, sonst werden Systemtools nicht mehr gefunden. Nutze einen anderen Variablenname.
Ansonsten: Schau dir mal die Hilfe zu FOR an (FOR /?ausführen), dort siehst du dass es möglich ist die Expansion von FOR Variablen zu verändern. Für deinen Fall wäre das ~DPfür drive und path.
set "filepath=%%~DPf"  
Steffen