Vad tusan hade CMD väntat sig?

Permalänk
Avstängd

Vad tusan hade CMD väntat sig?

I varenda jäkla DOS-version har mer eller mindre avancerade
batch-skript fungerat. Bland annat det mycket användbara
"if exists filnamn ..."

När jag försöker använda "if exists filnamn" i Windows 2000
blir jag avsnäst med "filnamn was unexpected at this time"!

Vad i h-vete hade CMD väntat sig då? En kaka?

Det finns nämligen inget vettigt med "if exists" om man just
inte kan kolla om en fil existerar eller inte!

Ja, vad är den märkvärdiga syntaxen i 2000 (server)?

Uppenbarligen fungerar inte det som har fungerat åtminstone
sedan DOS 3.0!

Visa signatur

http://www.theatlantic.com/national/archive/2012/05/how-the-p...
"If there's a simple lesson in all of this, it's that hoaxes tend to thrive in communities which exhibit high levels of trust. But on the Internet, where identities are malleable and uncertain, we all might be well advised to err on the side of skepticism."

Permalänk
Hedersmedlem

if exist INSTALL.LOG echo hej

Visa signatur

The variable 'brain' is declared but never used

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av damme

if exist INSTALL.LOG echo hej

Jaoo? Och...?

Då kommer meddelandet
"INSTALL.LOG was unexpected at this time".

Kommandot efter filnamnet kommer således aldrig att köras
och kommandofilen (om "if exists..." körs i en sån) att
avbrytas.

Visa signatur

http://www.theatlantic.com/national/archive/2012/05/how-the-p...
"If there's a simple lesson in all of this, it's that hoaxes tend to thrive in communities which exhibit high levels of trust. But on the Internet, where identities are malleable and uncertain, we all might be well advised to err on the side of skepticism."

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av damme
if exist

Citat:

Ursprungligen inskrivet av MBY
if exists

Visa signatur
Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av MBY
Jaoo? Och...?

Då kommer meddelandet
"INSTALL.LOG was unexpected at this time".

Kommandot efter filnamnet kommer således aldrig att köras
och kommandofilen (om "if exists..." körs i en sån) att
avbrytas.

C:\>if exist INSTALL.LOG echo hej hej C:\>cd winnt C:\WINNT>if exist INSTALL.LOG echo hej C:\WINNT>

Får jag. Vad får du?

Visa signatur

The variable 'brain' is declared but never used

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av damme

C:\>if exist INSTALL.LOG echo hej hej C:\>cd winnt C:\WINNT>if exist INSTALL.LOG echo hej C:\WINNT>

Får jag. Vad får du?

Ursäka felet, dock stavar jag inte fel vid prompten

Får du inte "... was unexpected at this time" vid något tilfälle?
Känner du till meddelandet? Får det i vissa for-loopar också,
på flera datorer. Verkar som CMD (och även COMMAND.COM för WINNT) inte är fullständigt DOS-kompatiblet.

Win95/98 har ju inte full kompatibilitet vad beträffar interna
kommandon, så det kan hända att WINNT också är ett hafsverk
på den punkten.

Det som inte fungerar på 95/98 är tex "for %a in (/Test) do echo %a"

Kommandot åvan ska dela upp strängen "Test" i T och est i
riktiga DOS. Dock finns denna odokumenterade funktion i varesig
95/98/NT eller 2000.
if exist ska dock banemig fungera!

Visa signatur

http://www.theatlantic.com/national/archive/2012/05/how-the-p...
"If there's a simple lesson in all of this, it's that hoaxes tend to thrive in communities which exhibit high levels of trust. But on the Internet, where identities are malleable and uncertain, we all might be well advised to err on the side of skepticism."

Permalänk
Hedersmedlem

Jag brukar få det när jag försöker göra någonting
Att scripta i cmd är inte direkt intiutivt tyvärr. Brukar alltid läsa help if och help for innan jag börjar och sen får jag traggla mellan hjälpen och mina tappra misslyckade försök

NT är väl inte direkt ett kommandotolks-OS så det är väl inte tänkt att man ska knappa runt och göra så många skript.

Visa signatur

The variable 'brain' is declared but never used

Permalänk
Medlem

Det e inte lättare o göra ett vb-script istället?

Visa signatur

AK47s for everyone! - Angry mob
Since NaN /= NaN, I think, we should decipher 'NaN' as 'Not a NaN' - Miguel Mitrofanov
(Varför är människan så benägen att tro på Gud?) Antagligen har det lönat sig och evolutionen har drivit fram sådana hjärnor. - Anon

Permalänk

Hett tips! Eftersom du kör server tänker jag att du kanske försöker dig på netlogon script?

Jag kör kixtart på jobbet, fungerar mycket väl och är gratis. Dock lite problem med ingroup osv under win9x.

www.kixtart.org

Permalänk
Hedersmedlem

c:\>if exists putty.rnd echo finns
Oväntat putty.rnd.

c:\>if exist putty.rnd echo finns
finns

Som sagt. Gör du inte något liknande "fel" (egentligen så är det ju inte du som har fel, men ändå ) vid for-loopar då?

Visa signatur

Asus B550M-Plus / Ryzen 5800X / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + HDDs / Corsair RM650x / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Avstängd

Efter ersättning av vissa systemfiler fungerar det som det ska.
Tydligen var CMD korrupt (hade en liten diskkrash).

Näe, det är inte logon-skript jag skriver utan jag bara
"filhanterar" vid kommandoprompten (det är fasiken så mycket
effektivare än i GUI).

Damme: Jag har skrivit .BAT-filer sedan DOS 3.0, så
help är inget för mig ;). Det GÅR faktiskt att skriva
batchfiler som kopierar in sig själva i andra batchfiler, dvs
virus. Det går (eller snarare gick - NT/9x-CMD är inte riktigt DOS-kompatiblet) t.o.m. att, med lite trick, räkna (kapslade konventionella FOR-loopar) och stränghantera i batch!

Beakta nedanstående kod (fungerar endast i riktigt DOS):

-----
@echo off
echo.Batch-Perka 1.00 av MBY 1992
echo.
if not !%1==! goto i_1
echo.Syntax: PERKA [antal]
echo.Antal mellan 1 och 99999
echo.
goto e
:i_1
set _L=
set _E=%1
:14
set _X=%_E%
for %%l in (/%_E%) do set _E=%%l
set _L=%_L%.
if not !%_X%==!%_E% goto 14
echo if !%%_x%%==!1 goto e>$HBCOVL.BAT
echo if !%%1==! %%0 0 .>>$HBCOVL.BAT
echo if not !%%3==!%%2 set _e=%%3.>>$HBCOVL.BAT
echo if !%%3==!%%2 goto u>>$HBCOVL.BAT
echo for %%%l%%%l in (0 1 2 3 4 5 6 7 8 9) do call %%0 %%1 %%2 %%_e%% %%4%%%l%%%l>>$HBCOVL.BAT
echo goto e>>$HBCOVL.BAT
echo :u>>$HBCOVL.BAT
echo if !%%4==!%%1 set _x=1>>$HBCOVL.BAT
echo echo.Perka %%4>>$HBCOVL.BAT
echo :e>>$HBCOVL.BAT
:d1
set _x=
set _e=
call $HBCOVL.BAT %1 %_L%
echo.
echo.K”r Perka regelbundet f”r bra h„lsa!
echo.
:e
set e=
set n=
-------

Exempel:

C:\>perka 5
Perka 1
Perka 2
Perka 3
Perka 4
Perka 5

Skriptet är i DOS-font (därav avsaknaden av åäö) och är inte
skrivet direkt, utan i mitt egna .BAT-kompilerande skriptspråk
HighBatch:
----
; Perka nu i batch!!!

; $code.packed
$code.normal
#post
$library hbc.lib
$dosver 3.0

@hide
; $header
environ|e|n

put|Batch-Perka 1.00 av MBY 1992
nl

ifb|!%1==!
put|Syntax: PERKA [antal]
put|Antal mellan 1 och 99999
nl
end
end ifb

len|%1

cdec|%1 %_L%
put|Perka %%4
end cdec

nl
put|K”r Perka regelbundet f”r bra h„lsa!
nl

----

Minns någon ANSI.SYS? Med denna eminenta drivrutin laddad
kunde jag faktiskt göra ett breakout-spel i batchskript!

Det är synd och skam att dessa snuttar inte fungerar i
NT/9x. Dock har ju många nya kommandon (i NT/2000) tillkommit
som jag inte hunnit utvärdera till fullo än.

Visa signatur

http://www.theatlantic.com/national/archive/2012/05/how-the-p...
"If there's a simple lesson in all of this, it's that hoaxes tend to thrive in communities which exhibit high levels of trust. But on the Internet, where identities are malleable and uncertain, we all might be well advised to err on the side of skepticism."