Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Batch soll erkennen - Datei oder Verzeichnis

Frage Entwicklung Batch & Shell

Mitglied: EvaEden

EvaEden (Level 1) - Jetzt verbinden

22.01.2013 um 08:00 Uhr, 2855 Aufrufe, 6 Kommentare

Liebe Spezialisten,

ich habe da ein Problem: Ich möchte mein Batch insofern erweitern, dass es zwischen Dateien und Verzeichnissen unterscheiden kann. Im Augenblick können nur Verzeichnisse bearbeitet werden. Also wenn es eine Datei einliest, soll xcopy ohne /i ausgeführt werden und das robocopy soll nicht laufen.

Vielen herzlichen Dank mit ebensolchen Grüßen
Eva~

@echo off&setlocal&chcp 1252>nul&pushd=\
if not exist %windir%\system32\robocopy.exe set Robo=No&echo Robocopy nicht gefunden, keine Synchronisierung m”glich!&echo.&pause
REM ———————————————————————————
REM Hierhin wird gesichert
REM ———————————————————————————
set Backup=S:\


if %Backup:~-1%==\ set Backup=%Backup:~0,-1%
if %1!==! (
REM ———————————————————————————
REM Zu sichernde Dateien...
REM ———————————————————————————
REM Achtung: Ein Laufwerk ohne Verzeichnis (z.B. D:\) darf nur alleine in der Liste stehen!
REM Ansonsten würden weitere schon gesicherte Daten (von anderen Laufwerken)
REM gelöscht werden, da sie auf diesem Laufwerk ja nicht vorhanden sind.
for %%n in (

"%USERPROFILE%\Favorites"
"%USERPROFILE%\Links"
D:\Bilder
D:\Dokumente
D:\Musik
D:\Videos


)do call:save %%n
)else (
REM ———————————————————————————————————————————————————————————
REM ...oder Parameterübergabe von zu sichernden Dateien
REM (bis zu 9 Datenquellen markieren, senden an Backup.bat
REM - setzt voraus: Backup.bat im Verzeichnis
REM C:\Users\..\AppData\Roaming\Microsoft\Windows\SendTo)
REM ———————————————————————————————————————————————————————————
for %%n in (%1 %2 %3 %4 %5 %6 %7 %8 %9)do call:save %%n)
popd&endlocal&chcp 850>nul&goto:eof
:save
set From=%~1
if %From:~-1%==\ set From=%From:~0,-1%
echo.&echo %From%
set To=%From%
if %To:~1,1%==: set To=%To:~3%&if %To:~2,1%! neq \! set To=%To:~2%
if "%To%" neq "" set To=\%To%
xcopy/m/e/i/h/r/k/y "%From%" "%Backup%%To%"
REM Sichert alle Dateien mit Archive-Attribut (auch geänderte Dateien mit identischer/m Größe/Zeitstempel)
if not defined Robo robocopy/dcopy:t /mir /r:0 /njh /njs "%From%" "%Backup%%To%"
REM Synchronisiert (Verzeichnis-Zeitstempel und Löschen von Dateien, die in der Quelle nicht mehr vorhanden sind)
Mitglied: bastla
22.01.2013, aktualisiert um 08:24 Uhr
Hallo EvaEden!

Um festzustellen, ob sich zB in %Ziel% ein gültiger Pfad zu einem Verzeichnis befindet, könntest Du etwa
dir /b/ad "%Ziel%" >nul 2>nul && echo Verzeichnis
verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: EvaEden
22.01.2013 um 11:59 Uhr
Super! Hät' ich auch selber drauf kommen können...

Vielen Dank & 1000 Grüße an bastla

 (\_/)
 (^.^)
(")_(")
Bitte warten ..
Mitglied: pieh-ejdsch
23.01.2013, aktualisiert um 19:23 Uhr
moin,

Du könntest die Variablenerweiterung bzw. Parametererweiterung auch für das Erstellen des ZielPfades benutzen.
Die Backslashes am Ende werden somit auch gleich entfernt:
01.
set Backup=S:\ 
02.
 
03.
if "%~1" equ "" goto :Einzeln 
04.
for %%A in (  
05.
 
06.
 "%USERPROFILE%\Favorites" 
07.
 "%USERPROFILE%\Links" 
08.
 D:\Bilder 
09.
 D:\Dokumente 
10.
 D:\Musik 
11.
 D:\Videos 
12.
 
13.
) do call :save %%A "%Backup%%%~pnxA" 
14.
exit /b 
15.
 
16.
:Einzeln 
17.
 rem den Paramer ein Backslahs sowie Punkt anhängen 
18.
call :save "%~1\." "%Backup%%~pnx1\." 
19.
if "%~2" neq "" shift &goto :Einzeln 
20.
exit /b 
21.
 
22.
:save 
23.
 rem die Parameter lassen sich nun zum Vollständigen Pfad auflösen ohne Backslash am Ende 
24.
xcopy /m/e/i/h/r/k/y "%~f1" "%~f2" 
25.
 
26.
 rem xcopy meldet dann aber auch einen Fehlerhaften Ordner bei Dateien\. 
27.
xcopy /m/e/i/h/r/k/y %1 "%~f2" ||goto :Files 
28.
 
29.
  
30.
 rem robocoby bekommt nun keine Backslashes 
31.
robocopy /dcopy:t /mir /r:0 /njh /njs "%~f1" "%~f2" 
32.
exit /b 
33.
 
34.
:files 
35.
xcopy /m/e/h/r/k/y "%~f1" "%~dp2" 
36.
 rem robocoby jammert rum wegen des letzten angehängten Backslashes 
37.
 rem aber nicht, wenn ein Punkt hinter dem Backslash ist 
38.
robocopy /dcopy:t /mir /r:0 /njh /njs "%~dp1." "%~dp2." "%~nx1" 
39.
exit /b
Gruß Phil
Bitte warten ..
Mitglied: EvaEden
08.02.2013 um 15:05 Uhr
Hi Phil,

vielen vielen Dank für Deinen Code-Review und die Verbesserungen <viele Ausrufezeichens>

Ich hab's gleich eingebaut und auch sonst noch verbessert/erweitert...

Herzlichst, Eva~ <°)))><

@echo off&setlocal&pushd=\
if exist %windir%\system32\robocopy.exe (set Skip=Xcopy&if %1! neq ! set Skip=)else (set Skip=Robo&echo Robocopy nicht gefunden, keine Synchronisierung ^(Verzeichnis-Zeitstempel und&echo L”schen von Dateien, die in der Quelle nicht mehr vorhanden sind^) m”glich!&echo.&pause)
setlocal EnableDelayedExpansion&call:exclude read
if %Skip%! neq Xcopy! if exist %~dpn0.exclude (for /f "delims=" %%L in (%~dpn0.exclude) do set FiledList=!FiledList! "%%L"
if !FiledList! neq !List! call>%~dpn0.exclude&call:exclude write
if defined List (set ExcludeList=/exclude:%~dpn0.exclude)else set ExcludeList=&del %~dpn0.exclude)else call:exclude write
setlocal DisableDelayedExpansion&chcp 1252>nul
:: ——————————————————————————
:: Hierhin wird gesichert
:: ——————————————————————————
set Backup=S:


if %1! neq ! goto:send
:: —————————————————————————
:: Zu sichernde Daten...
:: —————————————————————————
:: Achtung: Ein Laufwerk ohne Verzeichnis (z.B. D:\) darf nur alleine in der Liste stehen!
:: Ansonsten würden weitere schon gesicherte Daten (von anderen Laufwerken)
:: gelöscht werden, da sie auf diesem Laufwerk ja nicht vorhanden sind.
for %%D in (

"%USERPROFILE%\Desktop"
"%USERPROFILE%\Documents"
"%USERPROFILE%\Downloads"
"%USERPROFILE%\Favorites"
"%USERPROFILE%\Links"
"%USERPROFILE%\Music"
"%USERPROFILE%\Pictures"
"%USERPROFILE%\Videos"
D:\Outlook-Dateien\*.pst
D:\Treiber


)do call:save "%%~D." "%Backup%%%~pnxD."
goto:end
:: ————————————————————————————————————————————————————————
:: ...oder Parameterübergabe von zu sichernden Daten
:: (Kopiert zusätzlich Dateien mit Archiv-Attribut, so
:: auch geänderte mit identischer/m Größe/Zeitstempel)
:: Bis zu 9 Datenquellen markieren, senden an Backup.bat
:: - setzt voraus: Backup.bat im Verzeichnis
:: C:\Users\..\AppData\Roaming\Microsoft\Windows\SendTo
:: ————————————————————————————————————————————————————————
:send
call:save "%~1." "%Backup%%~pnx1."&if %2! neq ! shift&goto:send
echo.&echo Backup erledigt, Taste drcken...&pause>nul
:end
chcp 850>nul&attrib -s -h %Backup%>nul&popd&endlocal&goto:eof
:: ——————————————————————————
:: Auszuschließende Daten
:: ——————————————————————————
:exclude
for %%X in (

$RECYCLE.BIN
"System Volume Information"
"D:\Große Dateien\*.iso"


)do if %1==read (set List=!List! "%%~fX")else echo %%~fX>>%~dpn0.exclude
goto:eof
:save
chcp 850>nul&set Attr=/m&if %Skip%!==Robo! if not exist "%~f2" set Attr=
dir/b/ad "%~f1">nul 2>&1&&(set From=%~f1&set To=%~f2&set File=&set Dir=/e/i&set Mir= /mir&set Attrib=/s /d "%~f1\*")||(set From=%~dp1&set To=%~dp2&set File= "%~nx1"&set Dir=/q&set Mir=&set Attrib="%~f1")
if %Skip%! neq Xcopy! echo.&echo %~f1&xcopy%Attr%%Dir%/h/r/k/y%ExcludeList% "%~f1" "%To%"||(echo.&pause&goto:skip)
if not defined Attr attrib -a %Attrib%>nul
if not exist "%~f1" echo.&echo %~f1 nicht gefunden&echo.&pause&goto:skip
if %Skip%! neq Robo! robocopy "%From%." "%To%."%File% /dcopy:t%Mir% /r:0 /njh /njs /xd%List% /xf%List%
if %errorlevel% gtr 3 pause
:skip
chcp 1252>nul

PS: Wie kann man denn als "Quelltext" einfügen ?¿?
Bitte warten ..
Mitglied: bastla
08.02.2013 um 16:13 Uhr
Hallo EvaEden!
Wie kann man denn als "Quelltext" einfügen ?¿?
Verwende <code> und </code> ...

Grüße
bastla
Bitte warten ..
Mitglied: EvaEden
09.02.2013 um 18:52 Uhr
Dankesähr fielmals Baschtlr!!!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
USB-Stick mit Batch Datei erkennen
gelöst Frage von derCreeperBatch & Shell8 Kommentare

Ich habe ein Batch Programm entwickelt, welches dateien wenn ich es starte auf einen USB-Stick lädt. Alles schön und ...

Batch & Shell
Batch Datei in zufälliges Verzeichnis navigieren
Frage von MarioBros778Batch & Shell4 Kommentare

Hey Leute, ich hätte da ein Frage: Ist es möglich mit einer cmd datei in ein zufälliges Verzeichnis zu ...

Batch & Shell
Batch-Datei soll überprüfen ob ein Verzeichnis vorhanden ist
gelöst Frage von synapsenstauBatch & Shell7 Kommentare

Moin, wie bringe ich bitte einer Batch-Datei bei, das sie "schaut" ob ein Verzeichnis vorhanden ist und wenn nicht ...

Entwicklung
Verzeichnise sichern mit batch datei (Win10)
gelöst Frage von LimbachEntwicklung13 Kommentare

Bitte um eure Hilfe für mein Problem. Ich möchte gerne ein Verzeichnis mit Unterverzeichnissen per Batch Datei mit win7 ...

Neue Wissensbeiträge
Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 5 StundenWindows 101 Kommentar

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 7 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner2 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

LAN, WAN, Wireless
Brainstorming, einfachste Option 1 getrenntes LAN (mit WAN zugang)
Frage von 132954LAN, WAN, Wireless13 Kommentare

Hi, folgendes: Wir bekommen eine Glasfaser Leitung, Und das sollte Optional so aussehen: Ein Modem/Router für das WAN, ein ...

Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen12 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...