2009-03-16 12 views
0

は、私は私のテキストファイルが一番上に空白行が付属していますので、私がやっている最初の行は、その後、その後のタイトルデータと、その後、次のスクリプト、スクリプトの実行を停止するにはどうすればよいですか?

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 

を持っています。

私の問題は次のとおりですが、テキストファイルに空白行とヘッダーしか含まれないことがあります。だから、切り詰めの後、私はヘッダだけで終わる。それは私がデータをアクセスにインポートしているときに問題を引き起こしている。

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

これは、ファイルをチェックします。

誰もが、私は、ファイルのサイズを確認する方法を発見したファイルは

+0

FYI停止はタグではありません。 – Shoban

+0

合格してはならないサンプルデータとサンプルデータを提供してください。これにより、テストがはるかに簡単になります。しかし、あなたはバッチファイル(ファイルがあなたのdefによって空の場合)でインポートを停止するか、面倒ですか、おそらくAccessでVBAで解決することができます – Joey

答えて

0

空である場合、私はアクセスにインポートを停止することができる方法で私を提供することができますサイズは80バイト未満ですがWindowsバッチファイルの行数を確認する方法がわかりません。

私はこの欠点のある発明(バッチファイル)の使用を中止し、正常なシェルに切り替えることをお勧めします。

1

あなたは、ファイルがちょうど空の行やヘッダが含まれている場合は終了するスクリプトに以下を追加することができます。

@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 
関連する問題