Batch , command zoeken.

Status
Niet open voor verdere reacties.

Jori13

Gebruiker
Lid geworden
18 jan 2010
Berichten
159
Hoi,

Ik probeer met een simpel commando in Batch er achter te komen of nmake.exe (de Windows versie van make) in een van de in %PATH% geregistreerde mappen staat. Ik gebruik eigenlijk nooit Batch, aangezien het zo'n beperkte en onzinnige syntax heeft dat ik het liever, hoe simpel dan ook, in C of Perl schrijf. Maar dit keer heb ik het toch echt even nodig :). Dit is wat ik tot nu toe heb:

Code:
FOR /F "delims=;" %%I IN (%PATH%) DO IF EXIST %%Inmake.exe ECHO nmake.exe found!

Het werkt echter niet (vanzelfsprekend anders poste ik hier niet :) ). Hij blijft komen met dezelfde melding:

\Microsoft was unexpected at this time.

Wat doe ik precies fout?

Alvast bedankt!
Jori.
 
EDIT: Het komt waarschijnlijk door een spatie in de variabele %PATH%...

Niemand een idee?
 
duik even in PowerShell veel meer mogelijkheden en gebasseerd op .NET

HTH:D
 
Vanzelfsprekend, maar als ik een andere shell zou gebruiken had ik ook de geporte versie van Csh kunnen gebruiken. Power Shell is pas beschikbaar vanaf Windows XP SP2. Het is voor een make bestand onacceptabel dat het niet werkt op oudere versies van Windows.

Toch bedankt,
Jori.
 
Code:
@ECHO OFF

SET MAKE=nmake.exe
SET PERL_INTERPRETER=perl.exe
SET CC=cl.exe

SET MAKEFILE=makefile_windows
SET BUGTESTFILE=at_test.pl


ECHO At (@) installer - (C) Jori Koolstra.
ECHO.

ECHO Looking for %MAKE%...

FOR %%X IN (%MAKE%) DO (SET FOUND=%%~$PATH:X)

IF DEFINED FOUND (
	ECHO Found %MAKE%!
) ELSE (
	ECHO Could not find %MAKE%. Please check if %MAKE% is present in one of the PATH variable directories. If not; please download %MAKE% and resume this script.
	EXIT /B 1
)


ECHO Looking for compiler (%CC%)...

FOR %%X IN (%CC%) DO (SET FOUND=%%~$PATH:X)

IF DEFINED FOUND (
	ECHO Found %CC%!
) ELSE (
	ECHO Could not find %CC%. Please check if %CC% is present in one of the PATH variable directories. If not; please download %CC% and resume this script.
	EXIT /B 1
)


ECHO.
ECHO Output of (%MAKE% /f %MAKEFILE% at.exe):
ECHO *************************************************
%MAKE% /f %MAKEFILE% at.exe
ECHO.
ECHO *************************************************
ECHO.


ECHO Running bug checks (%BUGTESTFILE%)...

ECHO Looking for %PERL_INTERPRETER%...

FOR %%X IN (%PERL_INTERPRETER%) DO (SET FOUND=%%~$PATH:X)

IF DEFINED FOUND (
	ECHO Found %PERL_INTERPRETER%!
) ELSE (
	ECHO Could not find %PERL_INTERPRETER%. Please check if %PERL_INTERPRETER% is present in one of the PATH variable directories. If not; please download %PERL_INTERPRETER% and resume this script.
	EXIT /B 1
)


%PERL_INTERPRETER% %BUGTESTFILE%

ECHO.
ECHO.
ECHO Finished :-). See \doc for HTML documentation, for more (online) help see www.jori-koolstra.nl/at_programming. Type at.exe for help.
ECHo.

DATE /T

...
 
Dus als ik het goed begrijp wil je gewoon de opdrachtprompt laten zoeken naar een bestand !
Waarom gebruik je dan niet gewoon de ingebouwde zoek optie ??? Veel simpeler !
Wil je wel in BAT werken, zeg dat dan even want dan vraag ik verder !
 
Code

Dit is mijn versie voor jou tot zover ! :

Batcode:

Code:
:begin

set datum=date /t

echo Wat is de map ?
set /p path=

echo Wat is het te zoeken bestand ?
set /p file=

cd /d "%path%"
if exist "%file%" (

echo "%file%" gevonden in %path% !
>>log.txt ECHO %datum% - "%file%" gevonden in %path% !
goto volgende

) else (
if exist %file% (

echo %file% gevonden in %path% !
>>log.txt ECHO %datum% - %file% gevonden in %path% !

) else (
echo %file% NIET gevonden in %path% !
>>log.txt ECHO %datum% -  %file% NIET gevonden in %path% !
goto volgende

:volgende
echo Wil je nog een bestand zoeken ?
echo Type "ja"
echo.
echo Wil je sluiten type "exit"
echo.
set /p volgend=

if "%volgend%"=="ja" goto ja
if "%volgend%"=="exit" exit

:ja
cls
goto begin

Succes ermee :thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan