2011-03-30 10 views
8

मैं यह जांचना चाहता हूं कि विंडोज़ में एक विशिष्ट फ़ाइल खाली है या नहीं। यहां मेरी गैर वर्किंग स्क्रिप्ट है:विंडोज बीएटी: परीक्षण करें कि कोई विशिष्ट फ़ाइल खाली है

set dir="C:\test" 
set file="%dir%\fff.txt" 

cd %dir% 
if %file%%~zi == 0 exit 
ftp -s:"%dir%\ftp.action" 
exit 

क्या आप कृपया इसे डीबग करने में मेरी सहायता कर सकते हैं?

उत्तर

7

या मुख्य अंतर यह है कि मैं एक समारोह कॉल का उपयोग है

@echo off 
set "dir=C:\temp" 
set "file=%dir%\a.txt" 

call :CheckEmpty "%file%" 
goto :eof 

:CheckEmpty 
if %~z1 == 0 exit 
ftp -s:"%dir%\ftp.action" 
goto :eof 

के साथ प्रयास करें और% ~ z1 का उपयोग, के रूप में संशोधक केवल तरह पैरामीटर के लिए काम करता % 1,% 2 ..% 9 या के लिए लूप एक %% जैसे पैरामीटर ...

फ़ाइल का उपयोग
+0

धन्यवाद, यह काम करता है! मुझे केवल "सेट" कमांड में डबल कोट्स को हटाना पड़ा लेकिन यह सही था। –

+0

डबल कोट्स रिक्त स्थान या विशेष वर्णों के साथ पथ/फ़ाइल नामों के लिए आवश्यक हैं – jeb

+1

ठीक है, रिक्त स्थान 'set' कमांड के लिए परेशानियों का कारण नहीं बनेंगे। फ़ाइल नामों में कानूनी सभी पात्रों से मुझे लगता है कि केवल '& 'और'^'समस्याएं पैदा कर सकती हैं। – Joey

0

इस प्रयास करें:

Const ForReading = 1 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objFile = objFSO.OpenTextFile("c:\boot.ini", ForReading) 


    Dim arrFileLines() 
    i = 0 
    Do Until objFile.AtEndOfStream 
     Redim Preserve arrFileLines(i) 
     arrFileLines(i) = objFile.ReadLine 
     i = i + 1 
    Loop 
    objFile.Close 
+3

दोस्त नशे में हैं जब दोस्त दोस्त को नहीं देते हैं :-) – paxdiablo

+0

यह भाषा क्या है? यह सरल विंडोज कमांड लाइन (.bat) प्रतीत नहीं होता है ... –

+0

नहीं, मेरी गलती। इसकी vbscript, आप एक .vbs फ़ाइल बना सकते हैं और इसे पेस्ट कर सकते हैं। –

4

बैच समाधान की तुलना:

type nul > blank 
fc myfile blank > nul 
if errorlevel 1 echo myfile is not empty 
संबंधित मुद्दे