تعيين متغير إلى نتيجة "البحث" في دفعة الملف
-
06-07-2019 - |
سؤال
أود أن تعيين متغير بناء على عدد الخطوط في الملف التي تحتوي على إعطاء السلسلة.
شيء من هذا القبيل:
set isComplete = 0
%isComplete% = find /c /i "Transfer Complete" "C:\ftp.LOG"
IF %isComplete% > 0 ECHO "Success" ELSE ECHO "Failure"
أو:
set isComplete = 0
find /c /i "Transfer Complete" "C:\ftp.LOG" | %isComplete%
IF %isComplete% > 0 ECHO "Success" ELSE ECHO "Failure"
لم يكن أي من هذه الخيارات تعمل الواضح.
شكرا
المحلول
ومن سطر الأوامر
for /f "tokens=3" %f in ('find /c /i "Transfer Complete" "C:\ftp.LOG"') do set isComplete=%f
ومن البرنامج النصي دفعة
for /f "tokens=3" %%f in ('find /c /i "Transfer Complete" "C:\ftp.LOG"') do set isComplete=%%f
نصائح أخرى
أنت لا تحتاج إلى استخدام for
الأمر ؛ find
سيتم تعيين ERRORLEVEL
إلى واحدة من هذه القيم ، استنادا إلى النتيجة:
- 0, مباراة واحدة على الأقل وجد.
- 1, لا يطابق وجدت.
- 2 أو أكثر ، حدث خطأ.
يبدو أنك فقط تريد أن ترى إذا كان نقل الانتهاء ، وليس إجمالي عدد مرات السلسلة يظهر ، يمكنك أن تفعل شيئا مثل هذا:
@echo OFF
@find /c /i "Transfer Complete" "C:\test path\ftp.LOG" > NUL
if %ERRORLEVEL% EQU 0 (
@echo Success
) else (
@echo Failure
)
لا تنتمي إلى StackOverflow