2014-04-24 5 views
0

Donc, je n'ai pas beaucoup d'expérience avec les scripts batch et j'utilise beaucoup les langages de programmation habituels. J'essaye d'écrire quelque chose de très simple et je ne comprends pas pourquoi la moitié de mon code ne s'exécute pas comme je l'espère. Peut-être que je romps une règle cardinale dans les scripts Windows Batch. À l'heure actuelle, le code ci-dessous crée simplement le nouveau répertoire, puis le script semble s'arrêter et ne pas terminer le code impliquant l'heure, la copie ou l'effacement d'un fichier. Quelqu'un voit ce qui ne va pas avec ce code?Partie du code dans le fichier batch Windows n'exécutant pas

@echo off 

rem check for directory 
if not exist fileDir (
mkdir fileDir 

) 

rem check for file... 
if file.txt exists (

    REM get computer name 
    set hostName = echo %computername% 

    rem get time format 
    SET HOUR=%time:~0,2% 
    SET dtStamp9=%date:~-4%%date:~4,2%%date:~7,2%_0%time:~1,1%%time:~3,2%%time:~6,2% 
    SET dtStamp24=%date:~-4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2% 

    if "%HOUR:~0,1%" == " " (SET dtStamp=%dtStamp9%) else (SET dtStamp=%dtStamp24%) 

    type file.txt >> ./fileDir/%hostName%_%dtStamp%.LOG 

    REM clearing file contents of file.txt. 
    break > file.txt 
) 
+0

Je ne suis pas un expert en traitement par lots, mais en haut vous avez écrit «si n'existe pas fileDir». Plus tard, vous avez écrit 'if file.txt exists' il semble que votre syntaxe soit incohérente. Essayez '' si existe fichier.txt' ' – HLL

+0

@KenWhite: précisément. La commande 'break' ne montre rien, donc la redirection crée un fichier vide, c'est-à-dire" effacer le contenu du fichier file.txt ". – Aacini

+0

@Aacini: Ah, bien. :-) J'ai vérifié pour voir si break a fait quelque chose, mais n'a pas vérifié la sortie. Merci. :-) –

Répondre

2

La ligne:

if file.txt exists (

n'est pas une commande de fichier batch valide. Il n'y a pas exists option pour if l'option est exist singulier et il doit aller avant le nom de fichier. Ainsi, la ligne devrait être:

if exist file.txt (

Vous pouvez obtenir plus d'informations sur l'utilisation if dans un fichier de commandes en tapant help if dans une fenêtre d'invite de commande.

+0

Merci. Je savais que c'était quelque chose d'évident comme ça. Je l'apprécie certainement! – Tastybrownies

Questions connexes