Toon posts:

[XP/W2K] %drive% variabele gebruiken in cmd batch-script

Pagina: 1
Acties:

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@type empty_file
@set /P DRIVE="Type de drive letter in van de cf-kaart:"
@type empty_file
@echo Plaats de cf-kaart
@type empty_file
@pause
@if NOT exist %DRIVE%: goto error2

@type empty_file
@dd if=usb1.img of=\\.\%DRIVE% bs=1M
@pause
@goto end

:error2

@type empty_file
@echo Station %DRIVE% bestaat niet of is niet aanwezig
@type empty_file
@pause
@goto end

:end


Heet scriptje hierboven wil ik gebruiken om een image naar een cf-kaart te schrijven.
Omdat het op meerdere PC's bruikbaar moet zijn waarbij de drive-letters wisselen wil ik graag dat gebruikers de stationsletter opgeven waar de CF-kaart zich bevindt.

Met bovenstaande script lukt het niet

code:
1
@set /P DRIVE="Type de drive letter in van de cf-kaart:"


Levert in SET wel de gewenste variabele op, maar deze laat zich niet gebruiken in DD (de windows-versie dus;))

Hij springt op deze manier niet naar Error 2, dus de drive is wel aanwezig, toch kan DD er niet naar schrijven.

Geef ik E: op dan springt ie wel naar Error2

De syntax volgens de handleiding zou moeten zijn:

code:
1
dd if=usb1.img of=\\.\E: bs=1M


Daar heb ik dus van gemaakt

code:
1
@dd if=usb1.img of=\\.\%DRIVE% bs=1M


Als ik het commando zonder %drive% uitvoer werkt het wel, maar dan is de driveletter weer niet variabel.

Kan iemand mij uitleggen waarom dit niet werkt ?

[ Voor 8% gewijzigd door Verwijderd op 21-11-2005 10:08 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 20-03 22:50
Batch scripts zijn OS specifiek, en horen daarom beter thuis in het betreffende OS forum.

P&W -> WOS

https://fgheysels.github.io/


Verwijderd

Topicstarter
Oke maar zou je dan misschien de tag [XP/W2K] kunnen toevoegen?

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Misschien heel stom, maar type je wel een dubbele punt na het intypen van de schijfletter?

En als je eens een
code:
1
echo if=usb1.img of=\\.\%DRIVE% bs=1M

doet, wat zie je dan?

En om een lege regel te printen kun je ook
code:
1
echo.

gebruiken.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Verwijderd

Topicstarter
Als ik op de vraag "e" (zonder aanhalingstekens) intype zegt dd bekijk het maar, doe ik "e:" dan zegt het script zelf bekijk het maar.

Is het soms niet mogelijk een : in een variabele te zetten? want als ik %drive%: in het script zet werkt het wel (geprobeerd na de tip van codecaster, waarvoor dank;), maar dan zou het opgeven van e: in de variabele hetzelfde resultaat moeten geven toch ?

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Hm... het werkt bij mij wat vaag:

code:
1
2
3
4
5
6
7
8
9
10
11
12
Z:\>set vartemp = E:

Z:\>set
(...)
vartemp = E:
windir=C:\WINDOWS

Z:\>echo %vartemp%
%vartemp%

Z:\>echo %windir%
C:\WINDOWS

Heeeeel vreemd...

Maar
code:
1
@dd if=usb1.img of=\\.\%DRIVE%: bs=1M

werkt dus wel?

[ Voor 4% gewijzigd door CodeCaster op 21-11-2005 10:35 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Verwijderd

Topicstarter
Dat werkt wel, maar ik heb er eens een papiertje bij gepakt en het uitgeschreven maar volgens mijn gedachtengang levert het het volgende op aangezien als ik set uitlees er wel E: staat.

Dus op de vraag E: antwoorden en dan %drive% zou hetzelfde moeten opleveren dan bij set alleen E opgeven en dan %drive%: gebruiken, en dat doet het niet.

  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Vreemd, bij mij (XP) geeft het wel het verwachtte resultaat.

Overigens - mocht je heel creatief zijn zou je ook kunnen proberen of een "mountvol" of een "devcon" geen output geeft op waar de CF card zit (geen idee of dat zo is, maar misschien het proberen waard) en op die manier automatisch je CF card te vinden :)

  • Krypt
  • Registratie: April 2000
  • Laatst online: 12-02 20:18
Je moet wel consequent zijn met de dubbele punten..

code:
1
2
3
@set /P DRIVE="Type de drive letter in van de cf-kaart:"
@if NOT exist %DRIVE%: goto error2
@dd if=usb1.img of=\\.\%DRIVE% bs=1M

Even een C/P van je script.. bij de Exist statement staat wel de dubbele punt, bij je 'dd' statement niet.

Als je bij de set 'E:' invuld, dan gaat ie naar error 2 aangezien E:: niet bestaat. Als je 'E' intypt begint 'dd' te mekkeren aangezien hij de dubbele punt mist.

[edit]
Eerst even op refresh drukken helpt ook |:( Te laat.

[edit2]
CodeCaster: Je hebt een spatie achter vartemp geplaats.. doe eens echo %vartemp %, dan doet ie het wel.

[ Voor 29% gewijzigd door Krypt op 21-11-2005 13:58 ]

Pvouput live


Verwijderd

Verwijderd schreef op maandag 21 november 2005 @ 10:26:
Als ik op de vraag "e" (zonder aanhalingstekens) intype zegt dd bekijk het maar, doe ik "e:" dan zegt het script zelf bekijk het maar.

Is het soms niet mogelijk een : in een variabele te zetten? want als ik %drive%: in het script zet werkt het wel (geprobeerd na de tip van codecaster, waarvoor dank;), maar dan zou het opgeven van e: in de variabele hetzelfde resultaat moeten geven toch ?
een ":" mag inderdaad niet in een variabele. Dit is namelijk een manier om strings te manipuleren.
Edit: het zou wel moeten kunnen, ik heb dit vaak genoeg gebruikt, echter ik denk dat het hier misgaat om deze reden. welkom in de wondere wereld van batchscripts :)

type eens:

set testing=Dit is een test.
Echo %testing%
Echo %testing:~11,4%

[ Voor 18% gewijzigd door Verwijderd op 22-11-2005 14:06 ]


Verwijderd

CodeCaster schreef op maandag 21 november 2005 @ 10:35:
Hm... het werkt bij mij wat vaag:

code:
1
2
3
4
5
6
7
8
9
10
11
12
Z:\>set vartemp = E:

Z:\>set
(...)
vartemp = E:
windir=C:\WINDOWS

Z:\>echo %vartemp%
%vartemp%

Z:\>echo %windir%
C:\WINDOWS

Heeeeel vreemd...
dit is niet zo heel vreemd.
echo %vartemp % zou wel het gewenste resultaat geven :)

C:\>set vartemp=e:

C:\>echo %vartemp%
e:

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Dat heeft Krypt ongeveer 24 uur geleden al gezien.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...

Pagina: 1