windows - title tag länge 2018 snippet




Wie in der Windows-Eingabeaufforderung für 5 Sekunden schlafen?(oder DOS) (20)

Am einfachsten habe ich das gemacht:

Laden Sie die Sleep.exe unter http://www.sleepcmd.com/ herunter. Die .exe-Datei sollte im selben Ordner wie das Programm sein, das Sie geschrieben haben!

https://code.i-harness.com

Diese Frage hat hier bereits eine Antwort:

Windows Snipping Tool kann den Bildschirm erfassen, aber manchmal möchte ich den Bildschirm nach 5 Sekunden erfassen, z. B. ein Bild von der Webcam angezeigt wird. (Führen Sie das Skript aus und lächeln Sie zum Beispiel in die Kamera).

Also könnte ich in Ruby so etwas tun

sleep 3
system('c:/windows/system32/SnippingTool.exe')

aber nicht jeder Computer hat Ruby, also wie mache ich das in einer .bat-Datei? (etwas, das auf den meisten PCs mit dem Snipping-Tool lauffähig ist).

Das Problem ist, dass in einer BAT-Datei kein "Schlaf" verfügbar ist.


Bei Verwendung von "ping" wird -n das Zeitlimit nur dann bestimmen, wenn keine Antwort auf den Ping vorliegt. In diesem Beitrag erfahren Sie, wie Sie DELAY als Batch-Datei implementieren.

DELAY-Befehl als Batch-Datei implementiert

Ich könnte nur die wichtigen Bits kopieren, aber der ganze Beitrag ist sehr nützlich.


Dies ist die neueste Version dessen, was ich in der Praxis für eine Pause von zehn Sekunden verwende, um die Ausgabe zu sehen, wenn ein Skript beendet ist.

BEST>@echo done
BEST>@set DelayInSeconds=10
BEST>@rem Use ping to wait
BEST>@ping 192.0.2.0 -n 1 -w %DelayInSeconds%000 > nul

Das Echo done ermöglicht es mir zu sehen, wann das Skript beendet wurde und der Ping die Verzögerung liefert. Die extra @ -Zeichen bedeuten, dass ich den "fertig" -Text sehe und das Warten stattfindet, ohne dass ich von ihren Befehlen abgelenkt werde.

Ich habe die verschiedenen Lösungen hier auf einer XP-Maschine ausprobiert, da die Idee darin bestand, eine Batch-Datei zu haben, die auf einer Vielzahl von Maschinen laufen würde, und so wählte ich die XP-Maschine als die wahrscheinlich am wenigsten geeignete Umgebung aus.

GOOD> ping 192.0.2.0 -n 1 -w 3000 > nul

Dies schien wie erwartet eine Verzögerung von drei Sekunden zu geben. Ein Ping-Versuch dauert 3 Sekunden.

BAD> ping -n 5 192.0.2.0 > nul

Dies dauerte ungefähr 10 Sekunden (nicht 5). Meine Erklärung ist, dass es 5 Ping-Versuche gibt, jeweils etwa eine Sekunde auseinander, was 4 Sekunden dauert. Und jeder Ping-Versuch dauerte wahrscheinlich rund eine Sekunde, was insgesamt schätzungsweise 9 Sekunden dauerte.

BAD> timeout 5
BAD> sleep /w2000
BAD> waitfor /T 180
BAD> choice

Befehle nicht verfügbar.

BAD> ping 192.0.2.0 -n 1 -w 10000 > nul :: wait 10000 milliseconds, ie 10 secs

Ich habe das obige auch versucht, nachdem ich gelesen habe, dass Kommentare zu BAT-Dateien hinzugefügt werden können, indem zwei aufeinanderfolgende Doppelpunkte verwendet werden. Die Software kehrte jedoch fast sofort zurück. Setzen Sie den Kommentar auf eine eigene Zeile, bevor der Ping funktioniert.

GOOD> :: wait 10000 milliseconds, ie 10 secs
GOOD> ping 192.0.2.0 -n 1 -w 10000 > nul

Um besser zu verstehen, was Ping in der Praxis macht, lief ich

ping 192.0.2.0 -n 5 -w 5000

Dies dauerte ungefähr 30 Sekunden, obwohl 5 * 5 = 25. Meine Erklärung ist, dass es 5 Ping-Versuche gibt, die jeweils 5 Sekunden dauern, aber es gibt eine Verzögerung von 1 Sekunde zwischen den Ping-Versuchen: Es gibt schließlich wenig Grund, ein anderes Ergebnis zu erwarten, wenn Sie sofort erneut pingen Vernetzen Sie sich ein wenig, um sich von dem Problem zu erholen, das es hatte.

Edit: gestohlen von einem anderen Beitrag , .. RFC 3330 sagt, die IP-Adresse 192.0.2.0 sollte nicht im Internet erscheinen, so ping diese Adresse verhindert diese Tests spammen jemand! Ich habe den obigen Text entsprechend modifiziert!


Ein Hack, den ich gesehen habe, ist, den Ping-Befehl zu missbrauchen:

ping 127.0.0.1 -n 6 > nul

127.0.0.1 ist die IP-Adresse des lokalen Hosts.
-n 6 - es gibt eine 1s Verzögerung zwischen jedem Ping, also für eine 5s Verzögerung müssen Sie 6 Pings tun.
> nul - unterdrückt die Ausgabe.


Erstellen Sie eine cmd-Datei namens sleep.cmd:

REM Usage: SLEEP Time_in_MiliSECONDS
@ECHO off
ping 1.0.0.0 -n 1 -w %1 > nul

Kopieren Sie sleep.cmd nach c: \ windows \ system32

Verwendung:

sleep 500

Schläft für 0,5 Sekunden. Argumente in ms. Einmal nach System32 kopiert, kann überall verwendet werden.

EDIT: Sie sollten auch weg sein, wenn die Maschine nicht an ein Netzwerk angeschlossen ist (sagen Sie ein tragbares, dass Sie in der U-Bahn verwenden), funktioniert der Ping-Trick nicht mehr wirklich.


Es gibt!

SLEEP <seconds>

Wenn Sie es im Millisekunden-Modus wollen:

SLEEP -m <time in milliseconds>

Dies ist hilfreicher als TIMEOUT da TIMEOUT mit einem Klick auf eine Taste oder CTRL + C (für TIMEOUT /t <secs> /nobreak ) TIMEOUT /t <secs> /nobreak . SLEEP kann nicht durch irgendetwas abgebrochen werden (außer beim Schließen-Button: p)

Andere sind PING . PING benötigt jedoch eine Internetverbindung, da Sie die Verbindung einer Site aufzeichnen.


Ich bin sehr überrascht, dass niemand erwähnt hat:

C:\> timeout 5

NB Bitte beachten Sie jedoch (Danke Dan!), Dass timeout 5 bedeutet:

Schlafen Sie zwischen 4 und 5 Sekunden

Dies kann empirisch verifiziert werden, indem das Folgende in eine Batch-Datei geschrieben wird, es wiederholt ausgeführt wird und die Zeitunterschiede zwischen dem ersten und dem zweiten echo berechnet werden:

@echo off
echo %time%
timeout 5 > NUL
echo %time%

Ich denke der folgende Befehl kann helfen:

pause 5

Die Syntax des Befehls pause lautet: pause d \ \ wobei d die Dauer in Sekunden darstellt

Ich benutze Windows 7 (32 Bit), aber ich weiß nicht über die anderen.


Ich habe ein Powerbasic-Programm wait.exe geschrieben , dem Sie in Ihrer Batch-Datei einen Millisekunden-Parameter übergeben

wait 3000
system('c:/windows/system32/SnippingTool.exe')

der Code für die EXE:

FUNCTION PBMAIN()
  c$ = Command$
  s! = Val(c$)*1000
  Sleep s!         
END FUNCTION

Ich habe versucht, dies innerhalb einer Msbuild-Aufgabe zu tun, und Auswahl und Timeout funktionierten beide nicht wegen der I / O-Umleitung.

Ich habe schliesslich sleep.exe von http://sourceforge.net/projects/unxutils , was nett ist, weil es keine Installation benötigt und es winzig ist.

Versuche mit der choice :

<Target Name="TestCmd">
  <Exec Command="choice /C YN /D Y /t 5 " />
</Target>

Ergebnisse in:

TestCmd:
  choice /C YN /D Y /t 5

EXEC : error : The file is either empty or does not contain the valid choices. [test.proj]
  [Y,N]?
C:\test.proj(5,9): error MSB3073: The command "choice /C YN /D Y /t 5 " exited with code 255.

Mit timeout versuchen:

<Target Name="TestCmd">
  <Exec Command="timeout /t 5 " />
</Target>

Ergebnisse in:

TestCmd:
  timeout /t 5
EXEC : error : Input redirection is not supported, exiting the process immediately. [test.proj]
C:\test.proj(5,7): error MSB3073: The command "timeout /t 5 " exited with code 1.

Beiseite:

Ich benutze eigentlich <Exec Command="sleep 2 & dbghost.exe" /> weil ich dbghost.exe mehrmals parallel ausführe und temporäre Dateien / Datenbanken basierend auf der aktuellen Epoche in Sekunden erstellt - was natürlich bedeutet, wenn Sie starten mehrere Instanzen, jede verwendet denselben Temp-Namen. Ich habe ursprünglich versucht, MSBuild Extension Pack Thread.Sleep Befehl zu verwenden, aber es scheint, dass (normalerweise) die Sleep-Task fein ausgeführt wurde, aber dann die <exec> Task in allen Threads zur gleichen Zeit und natürlich dbghost zu starten. exe würde mit Konflikten scheitern. Bisher scheint die Verwendung von sleep.exe zuverlässiger zu sein.


In Windows XP sp3 können Sie den Befehl "Ruhezustand" verwenden


Können wir nicht waitfor /T 180 ?

waitfor /T 180 pause führt zu "ERROR: Zeitüberschreitung beim Warten auf 'Pause'."

waitfor /T 180 pause >nul wird diesen "Fehler" unter den Teppich kehren

Der Befehl waitfor sollte nach Windows95 im Windows-Betriebssystem vorhanden sein

In der Vergangenheit habe ich eine ausführbare Datei mit dem Namen sleep heruntergeladen, die in der Befehlszeile funktioniert, nachdem Sie sie in Ihren Pfad eingegeben haben.

Beispiel: sleep shutdown -r -f /m \\yourmachine obwohl beim Herunterfahren jetzt die Option -t eingebaut ist


Ping wartet für ca. 5 Sekunden vor dem Timeout, nicht 1 Sekunde wie oben angegeben. Das heißt, es sei denn, Sie sagen ihm, dass er nur 1 Sekunde warten soll, bevor er das Timing ausführt.

ping 1.0.0.1 -n 1 -w 1000

Ping einmal, warten Sie nur 1 Sekunde (1000 ms) für eine Antwort, dann Timeout.

Eine Verzögerung von ungefähr 20 Sekunden wäre also:

ping 1.0.0.1 -n 20 -w 1000


Sie können VBScript , zum Beispiel die Datei myscript.vbs :

set wsobject = wscript.createobject("wscript.shell")

do while 1=1
    wsobject.run "SnippingTool.exe",0,TRUE
    wscript.sleep 3000
loop

Batch-Datei:

cscript myscript.vbs %1

Versuchen Sie den Choice . Es gibt es seit MSDOS 6.0, und sollte es tun.

Verwenden Sie den Parameter / T, um das Zeitlimit in Sekunden und den Parameter / D anzugeben, um die Standardauswahl anzugeben und die ausgewählte Auswahl zu ignorieren.

Die einzige Sache, die ein Problem sein könnte, ist, wenn der Benutzer eines der Auswahlzeichen vor Ablauf des Zeitlimits eingibt. Ein partieller Workaround soll die Situation verschleiern - benutze das Argument / N, um die Liste der gültigen Auswahlmöglichkeiten zu verbergen, und habe nur 1 Zeichen in der Auswahlmenge, so dass es weniger wahrscheinlich ist, dass der Benutzer eine gültige Auswahl vorgibt Timeout läuft ab.

Unten ist der Hilfetext zu Windows Vista. Ich denke es ist das selbe unter XP, aber schau dir den Hilfetext auf einem XP Computer an.

C:\>CHOICE /?

CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]

Description:
    This tool allows users to select one item from a list
    of choices and returns the index of the selected choice.

Parameter List:
   /C    choices       Specifies the list of choices to be created.
                       Default list is "YN".

   /N                  Hides the list of choices in the prompt.
                       The message before the prompt is displayed
                       and the choices are still enabled.

   /CS                 Enables case-sensitive choices to be selected.
                       By default, the utility is case-insensitive.

   /T    timeout       The number of seconds to pause before a default
                       choice is made. Acceptable values are from 0 to
                       9999. If 0 is specified, there will be no pause
                       and the default choice is selected.

   /D    choice        Specifies the default choice after nnnn seconds.
                       Character must be in the set of choices specified
                       by /C option and must also specify nnnn with /T.

   /M    text          Specifies the message to be displayed before
                       the prompt. If not specified, the utility
                       displays only a prompt.

   /?                  Displays this help message.

   NOTE:
   The ERRORLEVEL environment variable is set to the index of the
   key that was selected from the set of choices. The first choice
   listed returns a value of 1, the second a value of 2, and so on.
   If the user presses a key that is not a valid choice, the tool
   sounds a warning beep. If tool detects an error condition,
   it returns an ERRORLEVEL value of 255. If the user presses
   CTRL+BREAK or CTRL+C, the tool returns an ERRORLEVEL value
   of 0. When you use ERRORLEVEL parameters in a batch program, list
   them in decreasing order.

Examples:
   CHOICE /?
   CHOICE /C YNC /M "Press Y for Yes, N for No or C for Cancel."
   CHOICE /T 10 /C ync /CS /D y
   CHOICE /C ab /M "Select a for option 1 and b for option 2."
   CHOICE /C ab /N /M "Select a for option 1 and b for option 2."


Zwei Antworten:

Erstens, um eine Batch-Datei zu verzögern, einfach ohne all die stumpfen Methoden, die die Leute vorgeschlagen haben:

timeout /t <TimeoutInSeconds> [/nobreak] 

http://technet.microsoft.com/en-us/library/cc754891.aspx

Zweitens, erwähnenswert, dass es zwar nicht genau das ist, was Sie wollen, indem Sie das eingebaute Windows-Schnipsel-Tool verwenden, können Sie jedoch einen Snip auslösen, ohne die Maus zu benutzen. Führen Sie das Schnipetool aus, verlassen Sie den aktuellen Ausschnitt, lassen Sie das Werkzeug jedoch weiterhin aktiv und drücken Sie Strg + Druck, wenn der Schnitt ausgeführt werden soll. Dies sollte sich nicht störend auf das auswirken, was Sie versuchen zu schnippen.


zwei weitere Möglichkeiten, die von XP und höher an alles funktionieren sollten:

mit w32tm

w32tm /stripchart /computer:localhost /period:5 /dataonly /samples:2  1>nul 

mit typeperf:

typeperf "\System\Processor Queue Length" -si 5 -sc 1 >nul

Timeout /t 1 >nul

Ist wie Pause in 1 Sekunde, können Sie die gekalkte zu fast 100.000 (99,999) Sekunden nehmen. Wenn Sie mit dem Internet verbunden sind, wäre die beste Lösung:

ping 1.1.1.1. -n 1 -w 1000 >nul

Wenn Sie pingen, zählen Sie in Millisekunden, also würde eine Sekunde 1000 Millisekunden sein. Aber der Ping-Befehl ist ein wenig zweifelhaft, es funktioniert nicht auf Offline-Rechnern. Das Problem ist, dass die Maschine verwirrt wird, weil sie offline ist und sie eine website/server/host/ip möchte, aber das geht nicht. Also ich würde eine Auszeit empfehlen. Viel Glück!


PING -n 60 127.0.0.1>nul

falls Ihr LAN-Adapter nicht verfügbar ist.





sleep