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

Fortschrittanzeige bei batch bzw batchkopiervorgang

Frage Entwicklung Batch & Shell

Mitglied: Phlegma

Phlegma (Level 1) - Jetzt verbinden

04.02.2007, aktualisiert 11.02.2007, 17409 Aufrufe, 8 Kommentare

moin.
Fortschrittanzeige, das soll die selbe funktion haben wie wenn man bei windows ne datei wohin verschiebt/kopiert
da kommt so ein kleines fenster in dem so ein balken langsam voll wird...

klar dass so eine perfekt windows copy unmöglich sein wird...
oder kann man einfach den explorer anweisen es zu kopiern und dann gibts so eine anzeige?

wenn nicht dann stell ich mir folgendes vor:
ich füre einen xcopy befehl aus( verzeichnis variabel) (nicht zwingeng xcopy aber am einfachsten für ein ganzes verzeichnis)
und vor jedem satz den er ausgibt steht eine zahl, die abnimmt im folgenden:
ausgabe:
01.
3 xcopy XY1 YZ1 
02.
2 xcopy XY2 YZ2 
03.
1 xcopy XY3 YZ3 
04.
(0) 
05.
kopiervorgang beendet!
ansonsten wäre auch gut:
ausgabe:
01.
3  
02.
xcopy XY1 YZ1 
03.
2  
04.
xcopy XY2 YZ2 
05.
1  
06.
xcopy XY3 YZ3 
07.
(0) 
08.
kopiervorgang beendet!
oder einfach nur
ausgabe
01.
02.
03.
04.
(0) 
05.
kopiervorgang beendet!
und jetzt seid ihr wieder gefragt denn dafür kenn ich mal wieder nicht gut genug für aus....
ansonsten wäre eine andere ansehnliche idee zu einer methode, dass der benutzer sieht wie lang ca. der vorgang noch dauert, gut

grüße, Ph
Mitglied: onegasee59
04.02.2007 um 22:24 Uhr
Ich meine immer Aufwand und Nutzen.

entweder vor Kopieren-Befehl, den echo-Befehl "mit Kopieren von xyz läuft"
oder nach Kopier-Befehl den echo-Befehl mit "Kopieren von xyz ist beendet" osä.

Du musst nur dafür sorgen das die Ausgabe durch den Kopierbefehl unterdrückt wird.

Bsp, wie ich es anwende (dabei logge ich alles noch zusätzlich in eine *.txt)

echo.
echo =^> Daten fr neue Datensicherung werden zusammengestellt
echo =^> Daten für neue Datensicherung werden zusammengestellt >> "%startpfad%KSC-DataSafe_log.txt"
xcopy /K /R /E /I /S /C /H /Y /Q "F:\Vertrieb - CallCenter\Vertriebsinformationen" "%USERPROFILE%\Eigene Dateien\Datensicherung-KSC\Vertrieb - CallCenter\Vertriebsinformationen" >> "%startpfad%KSC-DataSafe_log.txt"
xcopy /K /R /E /I /S /C /H /Y /Q "F:\Vertrieb - CallCenter\Telefonakquise\DSD" "%USERPROFILE%\Eigene Dateien\Datensicherung-KSC\Vertrieb - CallCenter\Telefonakquise\DSD" >> "%startpfad%KSC-DataSafe_log.txt"
usw.....
echo.
echo =^> L”schen unn”tiger DB-Kopien [db(Ziffer).mdb] -"Ansichten"-
echo =^> Löschen unnötiger DB-Kopien [db(Ziffer).mdb] -"Ansichten"- >> "%startpfad%KSC-DataSafe_log.txt"
if /i not exist "%USERPROFILE%\Eigene Dateien\Datensicherung-KSC\Vertrieb - CallCenter\Telefonakquise\Datenbanken\Ansichten\db*.mdb" goto end_ksc02
del /f /s /q "%USERPROFILE%\Eigene Dateien\Datensicherung-KSC\Vertrieb - CallCenter\Telefonakquise\Datenbanken\Ansichten\db*.mdb" >> "%startpfad%KSC-DataSafe_log.txt"
:end_ksc02
usw....

gruß
onegasee59
Bitte warten ..
Mitglied: Phlegma
05.02.2007 um 22:18 Uhr
moin,
jo is klar, aber dann ist ja auch nicht schlecht wenn angezigt wird welche datei kopiert wird,
ich brauche nicht zwingend ein logfile, aber ich hätte gerne eine anzeige die mir zeigt wie lang der vorgang noch dauert, bei zB 2gb kann das schon eine weile sein...

danke trotzdem, Ph
Bitte warten ..
Mitglied: onegasee59
08.02.2007 um 15:24 Uhr
Hallo

...aber ich hätte gerne eine anzeige die mir zeigt wie lang der vorgang noch dauert...

Also ich kenne sowas nur in dem Download-Tool WGET integriert.
dort erfolgt eine Anzeige der Downloadgröße, wieviel bisher davon geladen ist und eine grafische Anzeige in der Form
usw......................>
http://toolsandmore.de/Central/Produkte/Software/Internet/Download/wGet ...

Ich weiß allerdings nicht wie die das dort gemacht haben. Ich vermute aber das das ganze per Assembler gemacht wurde. Denn ich kann mir nicht vorstellen das man sowas auf ein paar Zeilen Batch hinbekommt.

Eventuelle haben aber Biber oder bastla oder miniversum hier im Forum eine zündende Idee.

gruß
onegasee59
Bitte warten ..
Mitglied: Biber
09.02.2007 um 20:06 Uhr
Moin Phlegma,

das Thema ProgressBar ist ohnehin schon spannend genug...
.. da muss man/frau nämlich sogar dann ein wenig Schmalz reinstecken, wenn die Visualisierungsfunktionen schon da wären.
Du kannst ja nur 38% von etwas "anzeigen", wenn Du weißt, wieviel 100% sind.

100% der Kopierdauer ---> kennst Du nicht
100% der Gesamt-(Giga)-Bytegröße ---> kennst Du nicht
100% der Datei-Anzahl (zu kopierende Dateien)....*grumpf*...kennst Du auch eigentlich erst hinterher.

Und selbst wenn du etwas davon kennen würdest...
Du kannst dich ja bei z.B. dem XCopy-Befehl (der wildcard-orientiert und rekursiv arbeitet),
eigentlich nicht zwischen zwei Datei-Copy-Befehle hängen und sagen "wieder eine weniger zu kopieren".
Oder beim XCopy nach jeweils 10000 kopierten Byte ein Ereignis auslösen, dass einen Explorer-Progressbar aktualisiert.

Und im Batch isses schon gar möglich.
Liegt nicht daran, dass Batch nix taugt, sondern an der Anforderung.
Du kannst eben nicht, wie onegasee schon beschrieben hat, die Standardkomponenten wie XCopy oder ein anderes fertiges Tool zum "Arbeiten" nehmen und dann noch ein anderes hochspezialisiertes Tool wie einen ProgressBar dranpappen.

Aber weil bald Wochenende ist... eine Fortschrittsanzeige für Arme geb ich Dir mit...

01.
:: --- snipp Hartz4ProgressBar.bat Biber 2007 
02.
@echo off & setlocal enableDelayedExpansion 
03.
:: --------von hier an anpassen 
04.
Set "sourcefiles=D:\temp1\*.*" & set "targetdir=d:\xyz\" 
05.
Set "xcopyOpts= /s /e /y /h" 
06.
:: --------bis hier her anpassen 
07.
Set "tmplist=%temp%\x2copy.lst 
08.
xcopy %xcopyOpts% /L "%sourcefiles%" "%targetdir%" >%tmplist% 
09.
for /f %%i in ('findstr "Datei(en)" %tmplist%') do Set /a Anzahl=%%i 
10.
For /f "delims=" %%i in ('findstr /v "Datei(en)" %tmplist%') do call :XCopyIt "%%i" "%sourcefiles%" 
11.
del %tmplist% 
12.
goto :eof 
13.
 
14.
:XCopyIt Parameter1: FQ-Quelldateiname para2: Sourcefiles 
15.
Echo noch %Anzahl% Dateien... 
16.
set "targetsubpath=%~dp1"  
17.
<b>ECHO</b> xcopy %xcopyOpts% %1 %targetDir%!targetSubpath:%~dp2=! 
18.
set /a Anzahl-=1 
19.
goto :eof
Beim Aufruf legt der also los....
01.
 
02.
(=20:01:16  F:\=) 
03.
>f:\temp\hartz4Progressbar.bat 
04.
noch 1673 Dateien... 
05.
xcopy  /s /e /y /h "D:\temp1\01000100..txt" d:\xyz\  
06.
noch 1672 Dateien... 
07.
xcopy  /s /e /y /h "D:\temp1\0cooltest.ps1" d:\xyz\  
08.
noch 1671 Dateien... 
09.
xcopy  /s /e /y /h "D:\temp1\106071_PSB_2006.xls" d:\xyz\  
10.
.... 
11.
..... 
12.
...und kommt Stunden später hier an... 
13.
noch 3 Dateien... 
14.
xcopy  /s /e /y /h "D:\temp1\Visio 2003\FILES\SETUP\SETUP.INI" d:\xyz\Visio 2003\FILES\SETUP\  
15.
noch 2 Dateien... 
16.
xcopy  /s /e /y /h "D:\temp1\Visio 2003\FILES\SETUP\VISPRO.XML" d:\xyz\Visio 2003\FILES\SETUP\  
17.
noch 1 Dateien... 
18.
xcopy  /s /e /y /h "D:\temp1\Visio 2003\FILES\WINDOWS\INF\AER_1031.ADM" d:\xyz\Visio 2003\FILES\WINDOWS\INF\ 
[Das fette ECHO ist wie immer nur zum Testen und muss zum Scharfmachen raus.]

Nicht nobelpreisverdächtig, aber eine/n Benutzer/in, der/die sonst gar nichts auf dem Bildschirm sieht, könnte es beruhigen...

Gruss
Biber
Bitte warten ..
Mitglied: Phlegma
10.02.2007 um 15:49 Uhr
hihi!
ah das hört sich super an, biber!!
ich wusste doch dass es möglich ist!
mir reicht das vollkommen... so hartz4 is es doch gar nicht...


nun, wieder das übliche.. ich versteh nix .. xD

also ich kann das jetzt einfach so aufnehmen und froh sein ... oder du erklärst mir das jetzt nochmal stück für stück... aber überarbeite dich bitte nich wegen mir...

so dann wärn da noch 2 sachen...
1. nochmal vom anfang.. dieser windows explorer, der fabriziert so schöne windows fortschrittsanzeigen... kann man sich das nich per befehl zu nutze machen?

2.
01.
Und im Batch isses schon gar möglich. 
ich glaub da fehlt ein "nicht" oder?

vielen dank!!
Ph
Bitte warten ..
Mitglied: Biber
10.02.2007 um 16:29 Uhr
Moin Phlegma,

zu 2)
Jepp, da hab ich das "nicht" vergessen.
zu 1) Lässt sich nicht der Explorer-ProgressBar nutzen?
Doch, natürlich.
Habe irgendwo im Forum auch schon mal eine Skizze dazu gepostet.
Aber:
- es geht nicht sinnvoll über Batch. Von daher--->neues Thema (und vorher die folgenden Bedenken sacken lassen)
- wie oben geschrieben - das Werkzeug zur Visualisierung von Prozentangaben ist da. Aber die Prozentangaben nicht.
Du hast NIEMALS einen Wert von 38%, den Du in einenm Schiebebalken darstellen kannst.
Und der zweite Einwand - bei einem Befehl, den Du abschickst als "Starte Prozess KopierMalAllsWasDaIst" ist das ein klarer Auftrag an den Prozess.
Der macht das und sacht "Fertig", wenn er fertig ist. Da bekommst du keine Zwischenberichte "Hier Xcopy, bin mit Datei 265 von 3097 beschäftigt.."

Kurz gesagt... aus meiner Sicht ist es das nicht wert, da viel Aufwand reinzustecken... irgendwo gibt es bestimmt ein Freewaretool "Massen-Copy mit Visualisierung". Ich hab keins.

Zu der Erläuterung, was in dem Batchschnipsel abgeht:
01.
:: --- snipp Hartz4ProgressBar.bat Biber 2007 
02.
@echo off & setlocal enableDelayedExpansion 
03.
:: --------von hier an anpassen 
04.
REM Ich gehe davon aus, dass es einen zu kopierenden Datenklumpen, z.b. alle Dateien aus "D:\Temp" gibt und einen Zielordner "d:\xyz" 
05.
REM die beiden könnten/würden in einem produktiven/flexibleren Batch als Parameter %1  und %2 übergeben werden. 
06.
REM Wichtig dabei: Parameter %2 (%targetDir%) sollte einen abschliessenden Backslash haben. 
07.
REM Damit XCopy rafft, dass es ein Verzeichnis ist, keine Datei. 
08.
Set "sourcefiles=D:\temp1\*.*" & set "targetdir=d:\xyz\" 
09.
REM Hier also <i>eigentlich</i> ergänzen:  
10.
if [%1] NEQ [] set "sourcefiles=%~1" 
11.
if [%2] NEQ [] set "targetDir=%2" 
12.
REM XcopyOpts sind die XCopy-Optionen, mit denen kopiert werden soll. Siehe XCopy /? 
13.
Set "xcopyOpts= /s /e /y /h" 
14.
:: --------bis hier her anpassen 
15.
Set "tmplist=%temp%\x2copy.lst"  && REM eine temporäre Textdatei lege ich an... 
16.
 
17.
REM Alles in %tmplist% schreiben, was XCopy kopieren <i>würde</i>... beachte den Parameter /L wie /List 
18.
xcopy %xcopyOpts% /L "%sourcefiles%" "%targetdir%" >%tmplist% 
19.
REM Alles, was Xcopy in einem Schwung kopiert <i>hätte</i> kopiere ich jetzt häppchenweise Datei für Datei gemäß der Liste 
20.
 
21.
REM Vorher lese ich noch die Gesamtanzahl...die steht auch in der Liste.. und merke mir die in %Anzahl% 
22.
for /f %%i in ('findstr "Datei(en)" %tmplist%') do Set /a Anzahl=%%i 
23.
 
24.
REM häppchenweise Datei für Datei gemäß der Liste kopieren bzw XCopyIt-Block aufrufen... 
25.
For /f "delims=" %%i in ('findstr /v "Datei(en)" %tmplist%') do call :XCopyIt "%%i" "%sourcefiles%" 
26.
REM Jetzt ist die Liste abgearbeitet... aufräumen... 
27.
del %tmplist% 
28.
REM Ende von alles... hier kann auch noch ein "Echo fertig..." und ein "pause" hin 
29.
goto :eof 
30.
 
31.
 
32.
REM XcopyIt bekommt den vollständigen Dateinamen (fully qualified) und als zweiten Parameter das Root-Verzeichnis der Quelldateien. 
33.
REM weil ich ja in das "richtige" Zile-Unterverzeichnis kopieren will (D:\temp\1.txt nach D:\xyz\1.txt; D:\Temp\sub\subsub\2.txt nach D:\xyz\sub\subsub\) 
34.
:XCopyIt Parameter1: FQ-Quelldateiname para2: Sourcefiles 
35.
Echo noch %Anzahl% Dateien... 
36.
set "targetsubpath=%~dp1"  
37.
REM Na ja...diese und die nächste Zeile vielleicht zweimal lesen... Parameter 1 ist z.B "D:\temp\sub\subsub"  ->davon braiche ich das "sub\subsub" 
38.
REM Alles, was davor steht ("D:\Temp") kann wech... gehört nicht in die Zielpfadangabe 
39.
ECHO xcopy %xcopyOpts% %1 %targetDir%!targetSubpath:%~dp2=! 
40.
set /a Anzahl-=1 
41.
goto :eof
.... das ist das Problem mit diesen Kurzschnipseln... die Erläuterung braucht immer Seiten....*brummel*

HTH Biber
der immer noch weitere blutjunge rothaarige Praktikantinnen zum Erstellen von Batch-Dokumentationen sucht...
Bitte warten ..
Mitglied: Phlegma
11.02.2007 um 15:48 Uhr
hi!
schön!
danke dir, werde wohl trotzdem wieder ne weile brauchen um das zu verstehen... bin zudem gerade krank... blöde krankheitswelle

vielen dank! Ph

zum testen kam ich auch noch nicht ... erstmal gelöst!
Bitte warten ..
Mitglied: Biber
11.02.2007 um 16:40 Uhr
Moin Phlegma,

hmm..."erstmal gelöst"..."so gut wie fertig"..."ein bisschen schwanger"..."erste Stufe der Gesundheitsreform"....

Ich behaupte mal, was zum Thema "Fortschrittsanzeige bei Batchkopiervorgang" zu sagen ist, ist gesagt.

Zum Thema "Strategien und Fussangeln bei Fortschrittsanzeigen" können wir nochmal unter "Entwicklung"/"Programmierung" einen Brainstormingthread lostreten.
Denn das ist werkzeug-/programmiersprachenunabhängig.
Und durchaus eine Diskussion wert - jeder kennt die lustigen Fortschrittsbalken, die stundenlang bei 15% oder auch manchmal bei 100% verweilen, ganz offensichtlich noch auf der Platte rumrödeln, aber ....irgendwie scheint das nichts mit der Gesamtaufgabe zu tun zu haben.
Oder die Fortschrittsanzeigen mit "281% kopiert..."
Ist ja nicht mal so, dass nur M$ da ein Problem mit hat, das gibt es auch bei Mac OS 10 oder Linux.

Anyhow... diesen Beitrag setz ich erstmal auf "Geschlossen" - auf Wunsch werde ich ihn natürlich wieder öffnen.

Dir erstmal gute Besserung
Gruss
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (9)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...