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, 5716 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 ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Linux
gelöst Umlaute zählen - Bash-Script (5)

Frage von plutowitsch zum Thema Linux ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...