2009-03-16 10 views
0

J'ai le script suivant,Comment arrêter l'exécution du script?

more +1 "C:\Documents and Settings\Administrator\Desktop\Backup Data\import file\1.txt" > "C:\Documents and Settings\Administrator\Desktop\Backup Data\import file\2.txt" 
"C:\Program Files\Microsoft Office\Office11\MSACCESS.EXE" "C:\Power Play\Daily\Daily.mdb" /x "Macro1" 
DEL "C:\Documents and Settings\Administrator\Desktop\Backup Data\import file\*.*" /q 

La première ligne que je fais depuis mon fichier texte est livré avec une ligne blanche au sommet, puis a suivi avec les titres puis les données.

Mon problème est le suivant, parfois le fichier texte contient seulement la ligne vide et l'en-tête. Donc, après la troncature, je finis avec seulement les en-têtes. Cela me cause un problème lorsque j'importe les données en accès.

Quelqu'un peut-il me fournir d'une manière où je peux arrêter l'importation dans l'accès si le fichier est vide

+0

arrêt FYI est pas une balise. – Shoban

+0

Pourriez-vous s'il vous plaît fournir des exemples de données qui passent et des exemples de données qui ne devraient pas passer. Cela rend les tests beaucoup plus faciles. Mais vous pouvez soit arrêter d'importer dans le fichier batch (si le fichier est vide par votre def), ce qui est encombrant, soit vous pouvez résoudre cela avec VBA dans Access ce qui est probablement plus facile – Joey

Répondre

0

J'ai trouvé un moyen de vérifier la taille du fichier:

for %R in ("C:\...\import file\1.txt") do if %~zR lss 80 exit 1 

Ce fichier vérifie taille bien (si c'est moins de 80 octets). Je ne sais pas comment vérifier le nombre de lignes dans le fichier de commandes Windows.

Je suggère d'arrêter d'utiliser cette invention infirme (fichiers batch) et de passer à une coquille saine.

1

Vous pouvez ajouter ce qui suit à votre script pour quitter si le fichier contient seulement une ligne vide et l'en-tête:

@echo off 
setlocal enableextensions enabledelayedexpansion 

set INPUT="C:\Documents and Settings\Administrator\Desktop\Backup Data\import file\1.txt" 
set OUPUT="C:\Documents and Settings\Administrator\Desktop\Backup Data\import file\2.txt" 

:: Get the number of lines in the file. 
:: Skip the first line since it is blank. 
set LINES=0 
for /f "skip=1 delims=" %%I in (%INPUT%) do (
    set /a LINES=LINES+1 
    if !LINES! EQU 2 goto :PROCESS 
) 
@echo %INPUT% is empty. 
endlocal 
exit /b 1 

:PROCESS 
:: Process the file 
more +1 %INPUT% > %OUTPUT% 
"C:\Program Files\Microsoft Office\Office11\MSACCESS.EXE"^
"C:\Power Play\Daily\Daily.mdb" /x "Macro1" 
DEL "C:\Documents and Settings\Administrator\Desktop\Backup Data\import file\*.*" /q 

endlocal 
exit /b 0 
Questions connexes