2017-04-19 2 views
1

Je suis en train d'insérer le contenu d'un fichier texte dans une console cmd , en utilisant:commande d'insertion dans démar

start cmd.exe < c:\text.txt 

J'ai aussi essayé:

start cmd.exe | c:\text.txt 

Cependant, tous les deux Ouvrez le shell cmd mais rien n'est passé. Mon point étant à la fin que j'ai un scheduler jenkins, et je passe le contenu du fichier texte à l'intérieur de la console en l'ouvrant avec la commande start. Donc, je ne cherche pas simplement à imprimer sur la console cmd; Je pourrais juste utiliser echo pour ce cas différent.

+0

la réponse ci-dessous ne répond pas exactement à la question, mais la conversation a en dessous une belle solution hackish mais élégante qui répond à la question! – uniXVanXcel

Répondre

2

Quelque chose comme ça?

de CMD.exe lui-même,

type C:\Text.txt 

Si c'est un fichier batch, puis

type C:\Text.txt 
pause 

ou pour voir juste le contenu, utilisez plus

more C:\Text.txt 

Si vous voulez exécuter des commandes à partir du fichier au lieu d'essayer d'insérer les commandes du fichier texte dans la console cmd, vous devriez r le construire comme un fichier batch qui est un exécutable. vous faites cela en renommant le fichier soit .bat ou .cmd

puis vous insérez vos commandes dans le fichier et exécutez-le en double-cliquant sur le fichier ou en l'exécutant à partir d'un planificateur etc Voici un exemple de batch ou cmd file:

echo Please wait while I execute. 
tp merge $/ServerFolderA $/ServerFolderB 

Alors juste quelques explications sur vos commandes initiales. Lorsque vous avez exécuté:

start cmd.exe | c:\text.txt 

vous a dit en fait le système d'exécuter plusieurs exécutables à partir d'une seule commande. Les commandes de tuyau est comme séparateur pour spécifier chaque commande. donc ceci:

ping 127.0.0.1 | nslookup www.google.com | cmd.exe | c:\text.txt 

va réellement faire toutes ces commandes dans l'ordre, d'abord il ping, le faire nslookup, cmd.exe ouvert puis ouvrez c: \ text.txt

Ici, vous étiez sur la bonne piste, mais je suppose que vous aviez une seule ligne dans le fichier et non une nouvelle ligne.

start cmd.exe < Text.txt 

qui utilisera le fichier Text.txt comme un fichier de réponses si je le modifier et insérer les éléments suivants:

echo This is an answer file 
ping 127.0.0.1 
ping 10.132.4.99 
echo Completed all commands 

puis exécutez start cmd.exe < Text.txt il exécutera tout en séquence. Cette différence est qu'il lit le fichier ligne par ligne et affiche chaque commande qu'il exécute.de sorte que votre sortie sera quelque chose comme ceci:

C:\>echo this is an answer file 
this is an answer file 
ping 127.0.0.1 

Pinging 127.0.0.1 with 32 bytes of data: 
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 

Ping statistics for 127.0.0.1: 
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), 
Approximate round trip times in milli-seconds: 
Minimum = 0ms, Maximum = 0ms, Average = 0ms 
ping 10.132.4.99 

Pinging 10.132.4.99 with 32 bytes of data: 
Reply from 10.132.4.99: bytes=32 time=3ms TTL=254 

Ping statistics for 10.132.4.99: 
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), 
Approximate round trip times in milli-seconds: 
    Minimum = 3ms, Maximum = 8ms, Average = 4ms 

Comme vous pouvez le voir cela fonctionne parfaitement, mais il affiche chaque commande que vous exécutez sauf, il ne fonctionne pas la commande dernière qui est echo Completed all commands. Donc, pour exécuter toutes les commandes, vous devez toujours ajouter une nouvelle ligne après vos dernières commandes. Cependant, quand vous le renommez en .cmd, il exécutera simplement les commandes sans afficher les commandes à exécuter et exécutera chaque ligne jusqu'à la fin. L'autre problème avec le fichier de réponses est-il lit ligne par ligne, afin d'avoir 3 nouvelles lignes sans texte dans le fichier de réponses se traduira par quelque chose comme ça

C:\> 
C:\> 
C:\> 

Donc juste après avoir cela dans le fichier de réponses:

ping 127.0.0.1 

ne fonctionnera pas car il est une seule ligne sans la section saisir.

mais en ajoutant simplement une nouvelle ligne après le faire fonctionner.

J'espère que tout cela a du sens.

+0

merci mais je ne suis pas certain .. il clignote la console et puis il s'en va, n'a pas le temps de voir réellement s'il y a quelque chose à l'intérieur .. – uniXVanXcel

+0

faites-vous cela dans un fichier batch? si c'est le cas, tapez pause à la fin du fichier batch. Je vais modifier la réponse. –

+0

Quel est le contenu de votre fichier texte? –