Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Variable im Script hoch zählen

Frage Entwicklung Batch & Shell

Mitglied: Nagus

Nagus (Level 2) - Jetzt verbinden

05.11.2010 um 15:57 Uhr, 5800 Aufrufe, 6 Kommentare

Hi,
ich stehe gerade auf dem Schlauch:

in einem Script benötige ich die Funktion, das aus einem Verzeichnis "Verzeichnis10" eine Datei in ein Verzeichnis "10" kopiert wird.
Da die Verzeichnisse nicht konsistent nummeriert sind und ich mir die Fehler in der log Datei schenken möchte, sieht mein mein Ansatz derzeit wie folgt aus:

01.
:robocopy 
02.
Set zaehler=10 
03.
if exist  d:\Verzeichnis\Verzeichnis%zaehler% robocopy d:\Verzeichnis\Verzeichnis%zaehler% d:\Verzeichnis\%zaehler% nfpc.* /w:30 /R:10 /V /TS /NP /log+:d:\Copy.log 
04.
Set zaehler=%zaehler%+1 
05.
if %zaehler%==25 goto Ende 
06.
goto robocopy 
07.
 
08.
:ende 
09.
 

Das blöde ist nun nur: der zählt mir die Variable nicht hoch und bleibt immer bei 10. GRRRR

Nagus
Mitglied: bastla
05.11.2010 um 16:09 Uhr
Hallo Nagus!

Wenn gerechnet werden soll, dann musst Du das auch klarstellen:
set /a zaehler=%zaehler%+1
bzw kürzer:
set /a zaehler+=1
Da Du aber sowieso immer von 10 bis 25 zählen willst, könntest Du auch eine "for /L"-Schleife verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: Nagus
05.11.2010 um 17:22 Uhr
Hi bastla,
danke!
Mit der for Schleife dachte ich mir schon, aber da tue ich mich meist ein bisserl schwer ....
Gruß
Nagus
Bitte warten ..
Mitglied: bastla
05.11.2010 um 18:37 Uhr
Hallo Nagus!

Na ja, aber
for /L %i in (10,1,25) do @echo if exist d:\Verzeichnis\Verzeichnis%i robocopy d:\Verzeichnis\Verzeichnis%i d:\Verzeichnis\%i nfpc.* /w:30 /R:10 /V /TS /NP /log+:d:\Copy.log
(zum Testen direkt an der Kommandozeile, und daher nur mit %i anstatt %%i und einem "@echo") ist dann aber auch nicht so wahnsinnig kompliziert ...

Grüße
bastla
Bitte warten ..
Mitglied: Nagus
05.11.2010 um 18:49 Uhr
Stimmt ist simpel.
Ich hau nur noch einige Formatierungen in das Log rein, damit es besser lesbar wird. Dabei wird dann die Zeile mit der For Schleife und den Pipes so lang, dass ich immer den Überblick verliere und die Tests unübersichtlich werden.
Aber mal sehen - ist eine Option für die Zukunft
Gruß
Nagus
(glücklich weil das Script sauber läuft)
Bitte warten ..
Mitglied: bastla
05.11.2010 um 19:02 Uhr
Hallo Glücklicher !

Du kannst in einem Batch ja auch etwas strukturieren:
01.
for /L %%i in (10,1,25) do ( 
02.
    if exist d:\Verzeichnis\Verzeichnis%%i ( 
03.
        echo Jetzt geht's los mit Verzeichnis%%i! 
04.
        robocopy d:\Verzeichnis\Verzeichnis%%i d:\Verzeichnis\%%i nfpc.* /w:30 /R:10 /V /TS /NP /log+:d:\Copy.log 
05.
        echo Das war's fuer Verzeichnis%%i. 
06.
        echo\ 
07.
08.
)
...und wenn Du an die letzte Klammer noch ein
>D:\Info.log
hängst, landen alle "echo"-Ausgaben in einer Datei ...

Falls Du allerdings Timestamps einbauen wolltest - etwa
        echo Am %date% um %time% geht's los mit Verzeichnis%%i!
müsstest Du dafür "delayedExpansion" verwenden, da ansonsten für %date%und %time% immer die Werte zu Beginn der Schleife verwendet würden.

Grüße
bastla
Bitte warten ..
Mitglied: Nagus
06.11.2010 um 13:30 Uhr
Danke für die Mühe!

Wird aber bestimmt nicht meine letzte Frage sein
Nagus
Bitte warten ..
Ähnliche Inhalte
Linux
gelöst Umlaute zählen - Bash-Script (5)

Frage von plutowitsch zum Thema Linux ...

Batch & Shell
PowerShell-Script zum Prüfen ob Datei(en) existieren (2)

Frage von Bonsai0815 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(6)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(40)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Windows 10
gelöst Windows 10 Home "Netzlaufwerk nicht bereit" (19)

Frage von Oggy01 zum Thema Windows 10 ...

Exchange Server
gelöst RU 17 Exchange 2010 . Erfahrungen? (10)

Frage von keine-ahnung zum Thema Exchange Server ...

Datenbanken
gelöst MySQL Zeiterfassungs-Problematik (wer ist eingecheckt) (9)

Frage von NativeMode zum Thema Datenbanken ...

Windows Server
Festplatten Ruhezustand Windows Server 2016 (8)

Frage von ahaeuser zum Thema Windows Server ...