Fortschrittanzeige bei batch bzw batchkopiervorgang
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:
ansonsten wäre auch gut:
ausgabe:
oder einfach nur
ausgabe
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
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:
3 xcopy XY1 YZ1
2 xcopy XY2 YZ2
1 xcopy XY3 YZ3
(0)
kopiervorgang beendet!
ansonsten wäre auch gut:
ausgabe:
3
xcopy XY1 YZ1
2
xcopy XY2 YZ2
1
xcopy XY3 YZ3
(0)
kopiervorgang beendet!
oder einfach nur
ausgabe
3
2
1
(0)
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 50704
Url: https://administrator.de/contentid/50704
Ausgedruckt am: 13.11.2024 um 06:11 Uhr
8 Kommentare
Neuester Kommentar
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 fr 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
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 fr 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
Hallo
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
...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
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...
Beim Aufruf legt der also los....
[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
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...
:: --- snipp Hartz4ProgressBar.bat Biber 2007
@echo off & setlocal enableDelayedExpansion
:: --------von hier an anpassen
Set "sourcefiles=D:\temp1\*.*" & set "targetdir=d:\xyz\"
Set "xcopyOpts= /s /e /y /h"
:: --------bis hier her anpassen
Set "tmplist=%temp%\x2copy.lst
xcopy %xcopyOpts% /L "%sourcefiles%" "%targetdir%" >%tmplist%
for /f %%i in ('findstr "Datei(en)" %tmplist%') do Set /a Anzahl=%%i
For /f "delims=" %%i in ('findstr /v "Datei(en)" %tmplist%') do call :XCopyIt "%%i" "%sourcefiles%"
del %tmplist%
goto :eof
:XCopyIt Parameter1: FQ-Quelldateiname para2: Sourcefiles
Echo noch %Anzahl% Dateien...
set "targetsubpath=%~dp1"
<b>ECHO</b> xcopy %xcopyOpts% %1 %targetDir%!targetSubpath:%~dp2=!
set /a Anzahl-=1
goto :eof
Beim Aufruf legt der also los....
(=20:01:16 F:\=)
>f:\temp\hartz4Progressbar.bat
noch 1673 Dateien...
xcopy /s /e /y /h "D:\temp1\01000100..txt" d:\xyz\
noch 1672 Dateien...
xcopy /s /e /y /h "D:\temp1\0cooltest.ps1" d:\xyz\
noch 1671 Dateien...
xcopy /s /e /y /h "D:\temp1\106071_PSB_2006.xls" d:\xyz\
....
.....
...und kommt Stunden später hier an...
noch 3 Dateien...
xcopy /s /e /y /h "D:\temp1\Visio 2003\FILES\SETUP\SETUP.INI" d:\xyz\Visio 2003\FILES\SETUP\
noch 2 Dateien...
xcopy /s /e /y /h "D:\temp1\Visio 2003\FILES\SETUP\VISPRO.XML" d:\xyz\Visio 2003\FILES\SETUP\
noch 1 Dateien...
xcopy /s /e /y /h "D:\temp1\Visio 2003\FILES\WINDOWS\INF\AER_1031.ADM" d:\xyz\Visio 2003\FILES\WINDOWS\INF\
Nicht nobelpreisverdächtig, aber eine/n Benutzer/in, der/die sonst gar nichts auf dem Bildschirm sieht, könnte es beruhigen...
Gruss
Biber
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:
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...
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:
:: --- snipp Hartz4ProgressBar.bat Biber 2007
@echo off & setlocal enableDelayedExpansion
:: --------von hier an anpassen
REM Ich gehe davon aus, dass es einen zu kopierenden Datenklumpen, z.b. alle Dateien aus "D:\Temp" gibt und einen Zielordner "d:\xyz"
REM die beiden könnten/würden in einem produktiven/flexibleren Batch als Parameter %1 und %2 übergeben werden.
REM Wichtig dabei: Parameter %2 (%targetDir%) sollte einen abschliessenden Backslash haben.
REM Damit XCopy rafft, dass es ein Verzeichnis ist, keine Datei.
Set "sourcefiles=D:\temp1\*.*" & set "targetdir=d:\xyz\"
REM Hier also <i>eigentlich</i> ergänzen:
if [%1] NEQ set "sourcefiles=%~1"
if [%2] NEQ set "targetDir=%2"
REM XcopyOpts sind die XCopy-Optionen, mit denen kopiert werden soll. Siehe XCopy /?
Set "xcopyOpts= /s /e /y /h"
:: --------bis hier her anpassen
Set "tmplist=%temp%\x2copy.lst" && REM eine temporäre Textdatei lege ich an...
REM Alles in %tmplist% schreiben, was XCopy kopieren <i>würde</i>... beachte den Parameter /L wie /List
xcopy %xcopyOpts% /L "%sourcefiles%" "%targetdir%" >%tmplist%
REM Alles, was Xcopy in einem Schwung kopiert <i>hätte</i> kopiere ich jetzt häppchenweise Datei für Datei gemäß der Liste
REM Vorher lese ich noch die Gesamtanzahl...die steht auch in der Liste.. und merke mir die in %Anzahl%
for /f %%i in ('findstr "Datei(en)" %tmplist%') do Set /a Anzahl=%%i
REM häppchenweise Datei für Datei gemäß der Liste kopieren bzw XCopyIt-Block aufrufen...
For /f "delims=" %%i in ('findstr /v "Datei(en)" %tmplist%') do call :XCopyIt "%%i" "%sourcefiles%"
REM Jetzt ist die Liste abgearbeitet... aufräumen...
del %tmplist%
REM Ende von alles... hier kann auch noch ein "Echo fertig..." und ein "pause" hin
goto :eof
REM XcopyIt bekommt den vollständigen Dateinamen (fully qualified) und als zweiten Parameter das Root-Verzeichnis der Quelldateien.
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\)
:XCopyIt Parameter1: FQ-Quelldateiname para2: Sourcefiles
Echo noch %Anzahl% Dateien...
set "targetsubpath=%~dp1"
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"
REM Alles, was davor steht ("D:\Temp") kann wech... gehört nicht in die Zielpfadangabe
ECHO xcopy %xcopyOpts% %1 %targetDir%!targetSubpath:%~dp2=!
set /a Anzahl-=1
goto :eof
HTH Biber
der immer noch weitere blutjunge rothaarige Praktikantinnen zum Erstellen von Batch-Dokumentationen sucht...
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
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