Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

STRG+C in Batch-Datei

1,097 views
Skip to first unread message

Peter Würfel

unread,
Mar 17, 2003, 1:40:00 PM3/17/03
to
Hallo!

Wie kann ich in einer batch-Datei die Tastenkombination Strg+C nachbilden?
Echo und was?

Peter

Michael Hemmer

unread,
Mar 18, 2003, 2:29:00 AM3/18/03
to
Peter Würfel wrote:
> Wie kann ich in einer batch-Datei die Tastenkombination Strg+C nachbilden?
> Echo und was?

Echo und Herzchen. Im Ernst!

C:\>edit mybatch.bat
[nur einen einzigen Buchstaben - z.B. "C" - in die Datei schreiben]
C:\>debug mybatch.bat
-e100
0815:0100 43.03
-w
00003 Bytes werden geschrieben
-q
C:\>edit mybatch.bat
["echo" vor Herzchen = <Strg-C> schreiben; weitere Befehle nach Bedarf]
C:\>

Alternativ kannst Du den letzten Schritt auslassen und die nur <Strg-C>
enthaltende Datei mit "type strg-c.txt" (*.bat sollte sie ja dann
freilich nicht heißen) von Deiner Batchdatei ausgeben lassen. Je nach
Weiterverwendung stört dann der Zeilenumbruch nach <Strg-C> (den der
DOS-Editor hinter der letzten Zeile einer Datei einfügt); in diesem Fall
nimm einfach das Windows-Notepad.

Gruß,

Michael

Wolfgang Ellsaesser

unread,
Mar 18, 2003, 9:06:33 AM3/18/03
to
Michael Hemmer schrieb:

> Echo und Herzchen. Im Ernst!

>
> C:\>edit mybatch.bat
[snip]

Das Herzchen kriegst Du in edit aber auch einfacher:

Einfach STRG+P und danach STRG+C drücken, das wars.


Wolfgang

--
http://www.almnet.de/ptsdos/ (PTS-DOS FAQ)

Michael Hemmer

unread,
Mar 18, 2003, 10:40:37 AM3/18/03
to
Wolfgang Ellsaesser wrote:
> Michael Hemmer schrieb:
[abenteuerlicher Weg, um eine Datei mit Strg-C zu erzeugen]

> Das Herzchen kriegst Du in edit aber auch einfacher:
>
> Einfach STRG+P und danach STRG+C drücken, das wars.

<mottetetin>
Das können Sie natürlich auch machen...
</mottetetin>

Man lernt nie aus - danke für Deinen Hinweis! Und dabei handelt es sich
um ein wohldokumentiertes Feature des Editors (ist ja auch sinnvoll, um
Seitenvorschübe in Textdateien einzufügen) - nur wer schaut schon bei
einem so simplen Programm in die Hilfe? Ich jedenfalls nicht, ganz
offensichtlich...

Gruß,

Michael

Peter Würfel

unread,
Mar 18, 2003, 2:14:00 PM3/18/03
to
** mhemmer@nospam_samson.de (Michael Hemmer) [18.03.03, 08:29] schrieb:

> Echo und Herzchen. Im Ernst!

Klar, Herzchen steht IMHO für ASCII 3.

[...]

> Alternativ kannst Du den letzten Schritt auslassen und die nur <Strg-C>
> enthaltende Datei mit "type strg-c.txt" (*.bat sollte sie ja dann
> freilich nicht heißen) von Deiner Batchdatei ausgeben lassen. Je nach
> Weiterverwendung stört dann der Zeilenumbruch nach <Strg-C> (den der
> DOS-Editor hinter der letzten Zeile einer Datei einfügt); in diesem Fall
> nimm einfach das Windows-Notepad.

Egal wie ich's mache, es wird mir dadurch nur ein Herzchen ausgegeben.
Wenn ich jedoch am Dosprompt <ALT>+<3>(im Zehnerblock) eingebe, wird mir
^C ausgegeben, genau das, was ich auch kriege, wenn ich <STRG>+<c> drücke
und das bräuchte ich inner Batch-datei (Hintergrund: die Batchdatei soll
nacheinander von verschiedenen Disketten bestimmte Dateien kopieren, das
funktioniert jedoch nicht, weil der Diskettenwechsel nicht erkannt wird)

Peter

Michael Hemmer

unread,
Mar 19, 2003, 4:19:13 AM3/19/03
to
Peter Würfel wrote:
>>Alternativ kannst Du den letzten Schritt auslassen und die nur <Strg-C>
>>enthaltende Datei mit "type strg-c.txt" (*.bat sollte sie ja dann
>>freilich nicht heißen) von Deiner Batchdatei ausgeben lassen. Je nach
>>Weiterverwendung stört dann der Zeilenumbruch nach <Strg-C> (den der
>>DOS-Editor hinter der letzten Zeile einer Datei einfügt); in diesem Fall
>>nimm einfach das Windows-Notepad.
>
> Egal wie ich's mache, es wird mir dadurch nur ein Herzchen ausgegeben.
> Wenn ich jedoch am Dosprompt <ALT>+<3>(im Zehnerblock) eingebe, wird mir
> ^C ausgegeben, genau das, was ich auch kriege, wenn ich <STRG>+<c> drücke
> und das bräuchte ich inner Batch-datei (Hintergrund: die Batchdatei soll
> nacheinander von verschiedenen Disketten bestimmte Dateien kopieren, das
> funktioniert jedoch nicht, weil der Diskettenwechsel nicht erkannt wird)

Hmmm, irgendwie kann ich mir's immer noch nicht so richtig vorstellen.
Kannst Du mal ein Stück von der Batch posten (mitsamt echo <Strg-C>)?

Gruß,

Michael

Olaf Erkens

unread,
Mar 19, 2003, 5:27:04 AM3/19/03
to
cubus...@t-online.de (Peter Würfel) wrote:

> Wie kann ich in einer batch-Datei die Tastenkombination Strg+C nachbilden?
> Echo und was?

Unabhängig von der hier ja bereits beschriebenen Lösung - mich würde
die Anwendung interessieren?!

Wenn ich einen Batchjob (mitten drin) beenden will, dann frag ich ein
Abbruchkriterium ab und geb dann ggf. den Befehl EXIT.

Olaf


--
********************* OLAF ERKENS **********************
FJ@#RRR http://www.wiso.uni-dortmund.de/~FJ
FJ1200 3YA BJ93 200Mm rrr#25
Engine replaced ... up and running wonderful :-)

Peter Würfel

unread,
Mar 19, 2003, 2:13:00 PM3/19/03
to
** mhemmer@nospam_samson.de (Michael Hemmer) [19.03.03, 10:19] schrieb:

> Hmmm, irgendwie kann ich mir's immer noch nicht so richtig vorstellen.
> Kannst Du mal ein Stück von der Batch posten (mitsamt echo <Strg-C>)?

Dann muss ich doch etwas weiter ausholen. Ich möchte (m)einen Computer von
Diskette booten und dann mittels F-Prot nach Viren scannen. Da in der
Zwischenzeit das Betriebssystem und F-Prot mit den Signaturdateien nicht
mehr auf eine Diskette passt, gehe ich dabei (der Tipp stammt aus irgend
einer NG, ist also nicht "auf meinem Mist gewachsen") wie folgt vor. Ich
boote von Diskette mit folgender autoexec.bat:
,--------------- [ autoexec.bat ] ---------------
| echo off
| set dr=p:
| a:\xmsdsk 12000 %dr% /y
| REM Ramdisk einrichten und dieser LW-Buchstabe p: zuweisen
| loadhigh a:\keyb gr,,a:\keyboard.sys
| PROMPT $p$g
| copy a:\command.com %dr%\
| copy a:\more.com %dr%\
| copy a:\pkunzip.exe %dr%\
| copy a:\fp.bat %dr%\
| PATH=%dr%\;a:\
| set TEMP=%dr%\
| set TMP=%dr%\
| %dr%
| fp.bat
`------------------------------
und fp.bat sieht wie folgt aus:
,--------------- [ fp.bat ] ---------------
| cls
| echo.
| echo 2.Notfalldiskette einlegen
| pause
| cls
| echo 2. Diskette wird eingelesen und verarbeitet
| copy a:\f-p1.zip *.*
| pkunzip -e f-p1.zip
| echo 3.Notfalldiskette einlegen
| pause
| cls
| echo.
| echo 3. Diskette wird eingelesen und verarbeitet
| copy a:\f-p2.zip *.*
| pkunzip -e f-p2.zip
| f-prot.exe
`------------------------------

Und das klappt auf zwei (von drei) Familien PCs auch ohne Problem. Beim
Dritten aber wird mir schon beim Abarbeiten der fp.bat gemeldet, dass
Dateien zum Kopieren nicht zu finden seien und natürlich auch nicht zum
unzippen und f-prot.exe kann somit auch nicht gefunden und gestartet
werden und mich grinst nach Abarbeiten der Batch-Datei nur der Prompt P:\>
dumm an. Gebe ich nun 'dir a:\*.*' ein, wird mir (obwohl in der
Zwischenzeit Diskette 3. im Laufwerk liegt) immer noch das
Inhaltsverzeichnis von Diskette 1 (der Bootdiskette angezeigt) Erst wenn
ich <STRG>+<C> betätige, zeigt mir ein anschließendes dir wirklich das,
was auf der Diskette ist (nämlich f-p2.zip)

Also war meine Idee in die fp.bat eine Befehlszeile einzufügen, mit der
mir dieses <STRG>+<C> erzeugt wird. Ergänze ich nun die fp.bat nach der
Aufforderung zum Diskettenwechsel durch

echo (also Herzchen) wie in den Postings beschrieben

oder durch

type strg-c.txt (wobei natürlich die *.txt in p vorhanden ist),

passiert im ersten Fall gar nichts und im zweiten Fall wird mir beim
Ablauf des batch nur ein Herzchen angezeigt (der gewünschte
Diskettenwechsel-erkennen-Effekt bleibt jedoch aus)

Beste Grüße

Peter

Michael Hemmer

unread,
Mar 20, 2003, 3:05:07 AM3/20/03
to
Peter Würfel wrote:
> (...) Gebe ich nun 'dir a:\*.*' ein, wird mir (obwohl in der
> Zwischenzeit Diskette 3. im Laufwerk liegt) immer noch das
> Inhaltsverzeichnis von Diskette 1 (der Bootdiskette angezeigt) Erst wenn
> ich <STRG>+<C> betätige, zeigt mir ein anschließendes dir wirklich das,
> was auf der Diskette ist (nämlich f-p2.zip)
>
> Also war meine Idee in die fp.bat eine Befehlszeile einzufügen, mit der
> mir dieses <STRG>+<C> erzeugt wird. Ergänze ich nun die fp.bat nach der
> Aufforderung zum Diskettenwechsel durch
>
> echo (also Herzchen) wie in den Postings beschrieben
>
> oder durch
>
> type strg-c.txt (wobei natürlich die *.txt in p vorhanden ist),
>
> passiert im ersten Fall gar nichts und im zweiten Fall wird mir beim
> Ablauf des batch nur ein Herzchen angezeigt (der gewünschte
> Diskettenwechsel-erkennen-Effekt bleibt jedoch aus)

Kleiner Denkfehler: Der Einsatz von echo oder type wie geschildert
bewirkt nur die *Ausgabe* von <Strg-C>, also ASCII-Code 3 - im normalen
Zeichensatz eben das Herzchen. Wie jedes andere (zumindest jedes
druckbare) Zeichen nimmt es eine Zelle auf dem Bildschirm ein.
(Zeilenumbruch, Wagenrücklauf und Tabulator hingegen werden besonders
interpretiert und resultieren in entsprechenden Bewegungen der
Schreibposition statt in einer tatsächlichen Anzeige.) Eine besondere
Aktion ist damit jedenfalls nicht verbunden.

Wenn Du hingegen <Strg-C> *tippst*, ist das eine *Eingabe*, die in der
Regel einer Verarbeitung unterliegt und eine Aktion auslöst, nämlich den
Abbruch des gerade laufenden Programms. Optisch quittiert wird diese
Eingabe aber nicht durch durch die Ausgabe von ASCII-Code 3 wie oben,
sondern von "^C", d.h. der ASCII-Codes 94 und 67 hintereinander. (Dieses
"normale" Verhalten können Programme freilich umgehen; so ist ja
beispielsweise im DOS-Editor <Strg-C> eine ganz normale
Tastenkombination zum Kopieren.)

Willst Du die beiden "verheiraten", musst Du zur Umleitung von Ein-
bzw. Ausgabe greifen; als Beispiel hier die nach dem ersten Bildschirm
abgebrochene Auflistung des Inhalts eines gut gefüllten Verzeichnisses:
dir /p c:\dos < strg-c.txt
In einer Batchdatei, wo man im Unterschied zum Command-Prompt das
berühmte Herzchen ja schreiben kann, hätte man theoretisch auch folgende
Option:
echo <Strg-C> | dir /p
(Leider kommt bei der Verwendung innerhalb der Batchdatei - übrigens
auch bei der ersten Variante - unweigerlich die Nachfrage
"Stapelverarbeitung beenden (J/N)", die man hier sicher nicht brauchen
kann.)

Zur Abhilfe bei Deinem Problem muss freilich - wenn ich das jetzt
richtig verstanden habe - <Strg-C> als Eingabe den DOS-Prompt direkt
erreichen; folglich müsste man den mit einer entsprechend präparierten
Datei füttern:
command < abbruch.txt
mit folgendem Inhalt:
<Leerzeile>
<Strg-C>
exit
Die Leerzeile (oder irgendein Befehl, der praktisch nichts tut, wie
"echo.", ist äußerst wichtig, sonst schlägt <Strg-C> (= Abbruch!)
noch während der Startphase von command.com zu bzw. ein - rien ne va plus!

Ob es allerdings in dieser untergeordneten Instanz von command.com
überhaupt seine heilsame Wirkung entfaltet, ist alles andere als sicher;
und ich finde das mit der Erkennung des Diskettenwechsels ja ohnehin
ziemlich obskur... :-) Notfalls kannst Du aber auch mal ausprobieren,
statt abbruch.txt gleich mit exit zu beenden, auch Deine copy-Befehle
etc. in diese Datei zu schreiben statt in fp.bat.

Ich hoffe jedenfalls, Du kommst damit weiter.

Gruß,

Michael

Heiko Rost

unread,
Mar 20, 2003, 3:41:46 AM3/20/03
to
Peter Würfel schrieb:

>Dann muss ich doch etwas weiter ausholen. Ich möchte (m)einen Computer von
>Diskette booten und dann mittels F-Prot nach Viren scannen. Da in der
>Zwischenzeit das Betriebssystem und F-Prot mit den Signaturdateien nicht
>mehr auf eine Diskette passt, gehe ich dabei (der Tipp stammt aus irgend

>einer NG, ist also nicht "auf meinem Mist gewachsen") wie folgt vor...

Wie wär's mit folgender Alternative:

- auf eine normale Bootdiskette zusätzlich alle f-prot.* und english.*
Dateien von F-Prot kopieren
- sign.def auf Diskette 2
- die anderen *.def auf Diskette 3

F-Prot rufst Du in der autoexec.bat mittels

f-prot /loaddef

auf. Durch das /loaddef fordert Dich f-Prot zum Einlegen der
entsprechenden Disketten auf.

Gruß Heiko

Ulrich F. Heidenreich

unread,
Mar 20, 2003, 5:22:19 AM3/20/03
to
Dies las ich von cubus...@t-online.de (Peter Würfel):

>Gebe ich nun 'dir a:\*.*' ein, wird mir (obwohl in der
>Zwischenzeit Diskette 3. im Laufwerk liegt) immer noch das
>Inhaltsverzeichnis von Diskette 1 (der Bootdiskette angezeigt)

Disk-Change-Leitung kaputt. Schonmal geschaut, ob das Floppykabel
richtig aufsteckt und nicht etwa die letzen beiden Pins neben dem
statt im Stecker gelandet sind?

>Also war meine Idee in die fp.bat eine Befehlszeile einzufügen, mit der
>mir dieses <STRG>+<C> erzeugt wird.

Falls der Diskwechsel wirklich mit CTRL-C erzwungen werden muß, wie
wär's denn mit dem programmgesteuerten Aufruf des Int23-Handlers?

Leider bin ich selbst aus der Materie soweit 'raus, daß ich nicht
mehr vorzuschlagen wage, den Int23 selbst durch ein per

debug
a
int 23
ret

nint23.com
rcx
3
w
q

erstelltes int23.com auszulösen. Villeicht mag die zahlreich anwesende
Mitleserschaft dort hilfreicherweise intervenieren :-)

CU!
Ulrich
--
Merkwürdig ist das schon: Mal glaubt man, seinen ganzen Witz und Esprit
in ein Posting gelegt zu haben und kein Schwein springt drauf an. Und
dann schreibt man mal mehr beiläufig irgendwas hin und landet prompt in
einer Sig oder im Netdigest. [H.-G. Bickel in dafh-p]

Peter Würfel

unread,
Mar 20, 2003, 2:53:00 PM3/20/03
to
Hallo an alle die mir geholfen haben,

habe das Diskettenlaufwerk ausgewechselt und siehe da, plötzlich merkt
mein Computer wieder, wenn 'ne Diskette gewechselt wurde.
Die ganze Strg-C-Mimik ist also überflüssig.
Ich danke euch allen, die mir bei meinen (überflüssigen) Lösungsversuchen
geholfen haben.
(habe aber trotzdem wieder was draus gelernt :-))

beste Grüße

Peter

0 new messages