Toon posts:

[DOS] tekst in variabele plaatsen

Pagina: 1
Acties:
  • 158 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben opzoek naar het DOS-commando om tekst uit een bestand in een variabele te stoppen.
Ik heb een bestand gemaakt waarin tekst (een woord) staat deze tekst moet in een variabele gestopt worden zodat ik het kan gebruiken in een script, weet iemand wat het commando is om dit in batch te maken ?
dus dat de tekst in de variabele komt ?

MvG,

R |\/|

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
onder unix / linux zou je het doen als :
export iets=`cat filename.txt`

Misschien dat het onder Dos ongeveer hetzelfde kan ..

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

vziw kan dat niet, aangezien DOS zelf geen uitgebreide script-voorzieningen heeft, en er ook geen mogelijkheid is om de output van een programma in een variabele te zetten

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
de output van een script kan je wel naar een ander bestand sturen, net als dat je het kan sturen naar de printer of naar nix "null" of /dev/null in linux.
Dit kan je doen op de volgende manier.

C:\WINDOWS\Desktop> dir > dirlist.txt
(schijft je dir naar het dirlist.txt bestand

C:\WINDOWS\Desktop> type myworld.txt > prn
(print het bestand myworld.txt uit)


dir > nul
(laat nix zien, omdat je het naar null stuurt :)

dit is dus de output omleiden, je kan ook de input omleiden via < i.p.v. > en werkt op dezelfde manier.

dus mijn probleem is dat ik de gegevens uit een ander tekstbestand moet lezen en die wil invoeren in een variabele, zodat ik hem in een script kan gebruiken.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dat heet piping, maar daar heb je niets aan, want dan kun je het nog steeds niet in een variabele stoppen. Je kunt hooguit een programmaatje schrijven wat invoer accepteert wat ie vervolgens in een variabele stopt, maar het probleem is dat de environment proces-specifiek is. Een gestart process neemt de vars over van z'n parent-proces, maar het is slechts een kopie; de wijzigingen die je doet worden niet doorgevoerd in het parent-proces

En dus is het niet mogelijk. Je kunt hooguit gaan hacken door de environment van het parent-proces aan te passen. Dit is mogelijk, maar het blijkft een hack. Je moet dan de PSP van het huidige proces opvragen, en dan daar het PSP van de parent uit halen, en daar de environment-gegevens vervolgens uithalen en aanpassen. Het probleem zit m echter in het feit dat de parent-PSP informatie undocumented is, en dus hoeft die informatie niet in het PSP te staan

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Het hele idee achter het script is het volgende:

Ik heb voor leerlingen op school een mailserver opgezet op linux basis (suse).
Alle leerlingen gebruiken de novell client voor het inloggen op het netwerk, nu wil ik dat bij het inloggen meteen je instellingen van je email adres etc. in het register word aangepast. dus accountnaam en emailadres. (dit kan in het loginscript)

Omdat het hier gaat om 1200 leerlingen, en ik geen zin heb om 1200 keer hun accountnaam en emailadres in te gaan tikken :X , heb ik hiervoor een script geschreven die de account naam haalt uit hun homedirectory en dit plaatst in een bestand genaamt naam.txt.

de inhoud van het bestand naam.txt word dus het volgende:
12345

dus alleen het leerlingnummer.
Hiernaast heb ik nog een batchbestand geschreven die via de functie %1 (dos-script) de gegevens veranderd zodat de goede accountnaam en emailadres word gewijzigt in het registerbestand.
Wanneer deze gegevens zijn verandert wordt het script gedraait en worden de instellingen van email in het register ingesteld. zodat ze niet elke keer dit hoeven aan te passen wanneer ze op een andere computer gaan zitten.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Waarom kies je dan voor batchverwerking en niet simpelweg voor een externe programmeertaal zoals QuickBasic, Pascal of C/C++ ?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Het probleem zit hem dus in het opvragen van de username waaronder iemand is ingelogt. Is er misschien een andere manier om je username uit windows te halen.
Ik weet dat de optie %USERNAME% onder windows xp wel goed werkt, maar deze optie zit niet onder windows 98 (wat alle leerlingen hier gebruiken).
Kan je het misschien ergens anders uit je systeem de username halen? ik heb gedacht aan het register, maar hoe haal je hem hieruit ZONDER tussenkomst van de gebruiker?

  • EXX
  • Registratie: Juni 2001
  • Laatst online: 22-08 21:53

EXX

EXtended eXchange

Met hulp van Google vond ik deze pagina: http://www.fpschultze.de/b5.htm

Deze bevat batches voor het zetten van de computer- en de username

For it is the doom of men that they forget...           Huidige en vroegere hardware specs         The Z80 is still alive!


  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 22-08 00:03
http://www.kixtart.org/ iets voor jouw ?

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


  • ArCadE
  • Registratie: Januari 2000
  • Laatst online: 21-08 14:05

ArCadE

No banana available

Of maak gebruik van kix32. Hier kan je erg gemakkelijk variabelen mee lezen/vullen/bewerken. Er staat meer op http://kixtart.org

Succes

/edit
Hm... net te laat....
/edit

[ Voor 13% gewijzigd door ArCadE op 15-04-2003 14:01 . Reden: Hm... net te laat.... ]


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 16:22

pistole

Frutter

e.e.a. is met wsh (windows scripting host) ook zeer makkelijk te doen, als je platform het ondersteunt...

Ik frut, dus ik epibreer


Verwijderd

Topicstarter
Ik denk dat ik nu wel voldoende informatie heb gekregen.
bedankt voor de hulp.

MvG
RM

  • ari3
  • Registratie: Augustus 2002
  • Niet online
*** How do I set a variable to the contents of a file?

The simplest method of setting a variable to a file uses a
helper file, for the sake of example I'll name it sethelp$

set result=
Must be a single line without a return at the end! In Notepad type
up to the = then save without pressing return. To set a variable
to a specified ONE line file and return it in %result% use
this batch...

@echo off
copy sethelp$ + %1 $tmp$.bat > nul
call $tmp$.bat
del $tmp$.bat

If running from the path you'll have to hard-code the location
of the sethelp$ file. If incorporating in another batch, change
the %1 to the name of the input file. Note... the file cannot
contain redirection (< > or |) unless enclosed by quotes, a
feature common to all batch input methods.

Here is a similar procedure only it creates its own helper
using the debug command...

:: Read a specified One line file into 'result'
@echo off
> (tmp).bac echo n (tmp).bah
>>(tmp).bac echo e 100 "set result="
>>(tmp).bac echo rcx
>>(tmp).bac echo 0b
>>(tmp).bac echo w
>>(tmp).bac echo q
debug < (tmp).bac > nul
copy (tmp).bah + %1 (tmp).bat > nul
call (tmp).bat
del (tmp).ba?

The "0b" under "rcx" defines the HEX length (11) of the set
line, alter if modifying the length of the variable name.

"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand


Verwijderd

Ik heb voor mijn werk hier(basisschool in denbosch) met QuickBasic een programmatje geschreven dat de username ophaalt in Windows 9x, dit progje moet gestart worden nadat je ingelogged bent(dus ook na het loginscript), dit doe ik gewoon vanuit de Start->Progs->Opstarten, daar een snelkoppeling naar het progje ;)

Intresse in het progje? Mail maar even, ik heb source alleen thuis. En het progje moet ik even aanpassen aan je wensen.
Dit progje laad nu dit:
code:
1
net use l: \\servername\username$


Maar ik kan er natuurlijk alles me maken wat je wil.

En idd, kix32 is goed, maar dit werkt ook.

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Om de gebruiker op te vragen kun je het beste GetUserName() gebruiken in een in C/C++/Pascal/VB geschreven programma. Dat werkt altijd. :P

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?

Pagina: 1