Jump to content

rybog

Members
  • Gesamte Inhalte

    9
  • Registriert seit

  • Letzter Besuch

Fortschritt von rybog

Apprentice

Apprentice (3/14)

  • Erste Antwort
  • Erster eigener Beitrag
  • Eine Woche dabei
  • Einen Monat dabei
  • 1 Jahre dabei

Neueste Abzeichen

0

Reputation in der Community

  1. Hallo, genau das, was du vorgeschlagen hast, diese kleine Änderung meines Skripts, erwarte ich von einem Forum. Abgesehen davon, dass deine Änderung nicht richtig funktioniert (anscheinend hast du sie nicht getestet), hast du mir einen Denkanstoß gegeben, um es richtig zu machen. @echo off mode 30,3 color 74 echo. set /p "input=Zeit in Minuten eingeben: %" set /a time=%input%-1 cls echo. echo Sie haben noch %input%'00" Zeit! ping -n 2 localhost > nul cls for /l %%x in (%time%,-1,0) do ( for /l %%y in (59,-1,0) do ( echo. if %%y gtr 9 ( < nul set /p "=Sie haben noch %%x'%%y" Zeit!" ) else ( < nul set /p "=Sie haben noch %%x'0%%y" Zeit!" ) ping -n 2 localhost > nul cls ) ) Vielen Dank und Gruß
  2. Hallo, da ich bis jetzt keine Hilfe bekommen habe, die man in einem Forum normalerweise erwartet, habe ich letztendlich eine Uhr selbst gebastelt. Der Code sieht zwar für mich schrecklich aus (an einer Optimierung muss ich noch arbeiten), auf dem Bildschirm aber, fängt die angezeigte Zeit bei X'00" an, und endet bei 0'00". Und genau das wollte ich erreichen. Am Ende kommen noch fünf Pieptöne dazu. Selbst ist der Mann! @echo off title CountDownTimer by rybog mode 30,3 color 74 echo. set /p "input= Zeit in Minuten eingeben: %" cls setlocal EnableDelayedExpansion for /l %%x in (%input%,-1,0) do ( if %%x gtr 0 ( for /l %%y in (60,-1,1) do ( echo. if %%y equ 60 ( < nul set /p "= Sie haben noch %%x'00" Zeit." ) else ( if %%y gtr 9 ( set /a min=%%x-1 < nul set /p "= Sie haben noch !min!'%%y" Zeit." ) else ( < nul set /p "= Sie haben noch !min!'0%%y" Zeit." ) ) ping -n 2 localhost > nul cls ) ) else ( echo. < nul set /p "= Sie haben noch %%x'00" Zeit." ping -n 2 localhost > nul cls ) ) for /l %%x in (1,1,5) do ( echo • ping -n 1 localhost > nul ) @daabm Ich habe nichts gegen deinen Vorschlag, nur, so zu machen, wie du es vorschlägst, kann ich leider noch nicht. Ich würde mich aber sehr freuen, wenn du es zeigst, wie man in meinem ersten Skript deinen Vorschlag verwirklichen kann. Oder zeige es bitte, wie man es mit einer anderen Formulierung machen kann. Übrigens, eine andere Sprache soll es nicht sein, sonst hätte ich einfach irgendeine Shareware-Uhr genommen. Gruß
  3. Hallo, ich habe bereits verschieden Varianten ausprobiert, die zu keinem brauchbaren Ergebnis geführt haben. Deshalb habe ich hier meine Frage gestellt, in der Hoffnung, dass den verbalen Ratschlägen praktische Beispiele folgen. Obwohl mein momentanes Können, in der Batch-Programmierung, Grenzen für die Lösung meines Vorhabens setzt, bin ich der Meinung, dass die Aufgabe als Batch-Skript machbar ist (nicht unbedingt in der von mir vorgeschlagenen Form). Ich Hoffte, dass sich hier eingefleischte Batch-Profis finden, die mein Problem als Herausforderung sehen würden und es lösen. Dabei könnte ich und die anderen Mitleser meines Beitrags wieder etwas lernen. Gruß
  4. Hallo, so weit war ich schon. Nur wenn ich 1 Sekunde addiere, dann wird es auf dem Bildschirm 6'60" angezeigt und nicht 7'00". Gruß
  5. Hallo, wenn ich auf der Eingabeaufforderung für meinen Count Down Timer eine Zahl für Minuten eingebe, z.B. 7, dann fängt der Timer ab 6'59" an. Ich möchte aber, dass er ab 7'00" anfängt. Hat jemand eine Idee, wie man es erreichen kann? @echo off mode 30,3 color 74 echo. set /p input=Zeit in Minuten eingeben: % set /a time=%input%-1 cls for /l %%x in (%time%,-1,0) do ( for /l %%y in (59,-1,0) do ( echo. if %%y gtr 9 ( < nul set /p "=Sie haben noch %%x'%%y" Zeit!" ) else ( < nul set /p "=Sie haben noch %%x'0%%y" Zeit!" ) ping localhost -n 2 > nul cls ) ) Gruß
  6. Hallo Daniel, Volltreffer! Es funktioniert! Vielen, vielen Dank! Ich muss nur noch das Skript in Windows XP testen (Ja, ja, ich weiß. Es wird nicht mehr von Microsoft unterstützt.). Und hier noch das ganze Skript für die, die vielleicht etwas davon lernen möchten: @echo off setlocal enabledelayedexpansion cd /d %1 if not exist %~n1.mnu ( echo %~n1> %~n1.mnu echo #>> %~n1.mnu echo #>> %~n1.mnu ) for /f %%x in ('dir /b /l /o:n *.') do ( find /i "/%%x" %~n1.mnu if !errorlevel!==1 ( echo /%%x>> %~n1.mnu echo #>> %~n1.mnu echo #>> %~n1.mnu ) ) for /f "tokens=1-2 delims=." %%x in ('dir /b /l /o:n *.prt.* *.asm.* *.mfg.* *.drw.* *.gph.* *.sec.* *.spl.* *.tbl.* *.sym.*') do ( find /i "%%x.%%y" %~n1.mnu if !errorlevel!==1 ( echo %%x.%%y>> %~n1.mnu echo #>> %~n1.mnu echo #>> %~n1.mnu ) ) Gruß
  7. Hallo, leider ändert sich dadurch nichts. Die Anweisung FIND funktioniert tadellos nur der ERRORLEVEL ist immer „0“ bei gefundenen und nicht gefundenen Dateinamen. Ich habe zusätzlich eine Bildschirm-Ausgabe für den ERRORLEVEL eingefügt, um es zu verdeutlichen. @echo off cd /d %1 if not exist %~n1.mnu ( echo %~n1> %~n1.mnu echo #>> %~n1.mnu echo #>> %~n1.mnu ) for /f "tokens=1,2 delims=." %%x in ('dir /b /l /o:n *.prt.* *.asm.* *.drw.*') do ( find /i "%%x.%%y" %~n1.mnu echo %errorlevel% <-- Nur zum Testen der ERRORLEVEL-Ausgabe auf dem Bildschirm if "%errorlevel%"=="1" ( echo %%x.%%y>> %~n1.mnu echo #>> %~n1.mnu echo #>> %~n1.mnu ) ) cmd /k <-- Nur zum Testen der ERRORLEVEL-Ausgabe auf dem Bildschirm
  8. Hallo, leider kann ich nicht jedes Mal eine neue MNU-Datei erstellen lassen. Anstelle der Raute-Zeichen werden später Beschreibungen für jede einzelne Datei eingefügt, und es handelt sich um sehr viele Dateien. Gruß P.S. Das Skript soll BATCH-Skript sein, um in jeder Windows-Version zu funktionieren, wo kein Powershell vorhanden ist.
  9. Hallo, ich habe mir ein BATCH-Skript geschrieben, das mit einer Verknüpfung vom Ordner „SendTo“ aufgerufen wird und folgende Aufgabe bewältigt: Ein Ordner wird nach bestimmten Dateien durchsucht (*.prt.* *.asm.* *.drw.*) und die gefundene Dateinamen werden in eine MNU-Datei geschrieben. Das Skript: @echo off cd /d %1 echo %~n1> %~n1.mnu echo #>> %~n1.mnu echo #>> %~n1.mnu for /f "tokens=1-2 delims=." %%x in ('dir /b /l /o:n *.prt.* *.asm.* *.drw.*') do ( echo %%x.%%y>> %~n1.mnu echo #>> %~n1.mnu echo #>> %~n1.mnu ) Das Ergebnis in der MNU-Datei: archive <-- Name des durchsuchten Ordners # # datei1.prt # # datei2.prt # # datei3.prt # # datei1.asm # # datei2.asm # # datei3.asm # # datei1.drw # # datei2.drw # # datei3.drw # # Ich wollte noch zwei Bedingungen einfügen, die überprüfen: - ob eine MNU-Datei im Ordner bereits vorhanden ist, und - ob neue Dateien dazugekommen sind. Wenn ja, dann soll das Skript die Erstellung der MNU-Datei überspringen und in die vorhandene MNU-Datei nur die Dateinamen einfügen, die neu dazugekommen sind. Die erste Aufgabe war leicht (siehe die 3. Zeile). Die zweite Aufgabe in der FOR-Schleife bereitet mir Schwierigkeiten. Ich habe eine Syntax in der 9. Zeile geschrieben, um es zu verdeutlichen, was ich erreichen möchte. @echo off cd /d %1 if not exist %~n1.mnu ( echo %~n1> %~n1.mnu echo #>> %~n1.mnu echo #>> %~n1.mnu ) for /f "tokens=1-2 delims=." %%x in ('dir /b /l /o:n *.prt.* *.asm.* *.drw.*') do ( if find /i "%%x.%%y" %~n1.mnu goto found <--Diese Syntax ist natürlich falsch, zeigt aber mein Vorhaben. echo %%x.%%y>> %~n1.mnu echo #>> %~n1.mnu echo #>> %~n1.mnu :found ) Kann mir bitte jemand einen Tipp geben, wie ich es bewerkstelligen könnte? Gruß === EDIT=== Hallo, ich habe einen Ansatz gefunden. Ich überprüfe jedes mal, ob es eine gegebene Datei gibt. @echo off cd /d %1 if not exist %~n1.mnu ( echo %~n1> %~n1.mnu echo #>> %~n1.mnu echo #>> %~n1.mnu ) for /f "tokens=1-2 delims=." %%x in ('dir /b /l /o:n *.prt.* *.asm.* *.drw.*') do ( find /i "%%x.%%y" %~n1.mnu if %errorlevel%==1 ( echo %%x.%%y>> %~n1.mnu echo #>> %~n1.mnu echo #>> %~n1.mnu ) ) Leider funktioniert die Anfrage "if %errorlevel%==1" nicht wie gewünscht. Das heißt, ich möchte wissen, ob "find" auch etwas gefunden hat. In der Batch-Konsole dagegen funktioniert diese Abfrage wunderbar. Warum dieser Unterschied?
×
×
  • Neu erstellen...