.bat file hulp?
Is iemand hier toevallig handig met het maken van een .bat file?
Wat ik wil is in grote lijnen het volgende:
Ik heb een map met daarin 2 andere mappen en 2 bestanden:
Wat ik nu wil is het volgende:
1. als ik het .bat bestand open, moet mij gevraagd worden om een string X in te voeren
2. in het bestand foo.xml moet gezocht worden naar een unieke (vaststaande) string, bijv. ABCXYZ
3. string ABCXYZ moet in het bestand vervangen worden door string X
4. het bestand foo.xml moet worden opgeslagen
5. de 2 mappen en bestanden moeten als 1 bestand gezipt worden, bijvoorbeeld new.zip
Is er iemand die dit uit z'n mouw schudt?
Gewijzigd op 01/03/2016 16:30:16 door Ozzie PHP
Onder Linux is dat een krachtige tool om zoiets op te lossen
Nee, het moet gewoon een lokaal bestandje op m'n pc zijn. Heeft niks met een website te maken.
>> ik weet niet of onder DOS ook "sed" beschikbaar is?
Geen idee, ik ken dat commando niet?
of een powershell die dat ook op kan lossen.
"Nee, het moet gewoon een lokaal bestandje op m'n pc zijn. Heeft niks met een website te maken."
Maar PHP heeft ook niets met een website te maken :-p
Toevallig wordt php veel voor websites gebruikt, maar je kunt het ook gebruiken voor scriptjes die je vanaf de command line of vanuit een cronjob aanroept.
php mijnscript.php jo
en dan als simpel voorbeeld in mijnscript.php
Gewijzigd op 01/03/2016 17:34:53 door Ivo P
Gewoon in DOS is dat dan denk ik. Niet in PHP :-)
je hebt er een commando bij nodig dat meer is dan dat in DOS beschikbaar is. Simpele handelingen als "kopieer file", "verplaats file" en "maak dir" kan dos wel.
Maar je zult dus iets extra's nodig hebben.
sed zou dat kunnen zijn. Ik neem aan dat je dan een sed.exe ergens vandaan moet halen in op je pc zetten.
Alternatief is om het in php, perl of andere script taal te schrijven.
Zippen kan dos van nature ook niet, dus ook daar zul je een tooltje voor moeten downloaden.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$content = file_get_contents('foo.xml');
$content = str_replace('ABCDEF', $argv[1], $content);
file_put_contents('foo.xml', $content);
?>
$content = file_get_contents('foo.xml');
$content = str_replace('ABCDEF', $argv[1], $content);
file_put_contents('foo.xml', $content);
?>
en in je bat file komt dan
Ozzie PHP op 01/03/2016 17:31:05:
>> of gaat dat niet werken?
Nee, het moet gewoon een lokaal bestandje op m'n pc zijn. Heeft niks met een website te maken
Nee, het moet gewoon een lokaal bestandje op m'n pc zijn. Heeft niks met een website te maken
Huh PHP hoeft niet per definitie voor een website gebruikt te worden..
Zolang je maar PHP op je pc hebt staan werkt het gewoon.
Je kunt zelfs de user om input vragen.
http://www.sitepoint.com/php-command-line-1/
Gewijzigd op 01/03/2016 18:05:56 door Frank Nietbelangrijk
Dus het vervangen van de tekst gaat al niet lukken en zou dus al met PHP moeten? Begrijp ik je goed?
Ik heb trouwens wel WinRar op m'n computer staan. Kan ik daar dan mee zippen?
Toevoeging op 01/03/2016 18:08:44:
@Frank
Ik heb niet zoveel trek om voor zoiets (relatief simpels) PHP te gaan installeren op m'n pc, dus vandaar dat ik een iets makkelijkere oplossing zoek ...
Toevoeging op 01/03/2016 18:10:57:
PS ... zou het mogelijk zijn om die string X in een apart bestandje te zetten en te importeren in foo.xml? Dus dat in foo.xml ergens staat IMPORT string uit bestandje foobar?
Volgens mij is het gewoon even de zip uitpakken op je harde schijf en even de PATH voorzien van het pad naar php.exe. Dat laatste is zelfs nog optioneel, je kunt php ook zo aanroepen:
C:\php\php.exe C:\myscript\myscript.php
http://php.net/manual/en/install.windows.manual.php
http://windows.php.net/download/
Ik snap het Frank, maar liever dus niet een complete installatie als het wellicht makkelijker kan. Als het echt niet anders kan is het een optie, maar het lijkt me nogal omslachtig.
je zult iets moeten installeren.
Ik heb zelf in mijn pre-php tijd iets dergelijks in Perl gescript.
PHP kan het
en het aangehaalde SED en Powershell.
mogelijk zijn er ook notepad-vervangers die zo iets zouden kunnen doen (net als je programma's als 7zip en dergelijk ook via de command line kunt aanroepen om files te zippen.
Hoe dan ook zul je iets op je pc moeten zetten.
Maar van nature is DOS een Disk Operating System en dus bedoeld om files te kunnen benaderen of behandelen op een schijf.
Allerhande extra's zul je dan dus via externe tools moeten oplossen.
Windows Script Host (WSH) zou het wel kunnen. Omwille van de beveiliging zou ik dat echter niet aanbevelen voor zo'n kleinigheid.
Gewoon PHP vanaf de opdrachtprompt uitvoeren. Ik doe dat zelf vrijwel dagelijks voor unit tests.
Met de Gewoon PHP vanaf de opdrachtprompt uitvoeren. Ik doe dat zelf vrijwel dagelijks voor unit tests.
Met het voordeel dat je zelf php-master bent Ozzie ;-)
Thanks ... dan ga ik inderdaad maar een andere oplossing zoeken. Inderdaad misschien via PHP dan. Kun je via PHP eigenlijk gewoon een zip bestand maken? Eerlijk gezegd nog nooit nodig gehad ...
maar in je bat file kun je natuurlijk eerst het phpscript laten uitvoeren, en daarna via dos een andere tool aanpsreken om te zippen:
oid
Oké, thanks. Zal er eens over nadenken wat het handigst is. Heb nu in ieder geval een beetje een idee in welke richting ik het moet gaan zoeken.
Maar waarom niet een executeble ?
Er zijn genoeg talen waar je dit mee kunt maken.
C, C++, C#, Java, Basic (compiler nodig) Delphi, Pascal, zoek maar uit wat voor jou het gemakkelijkst is.
Op die manier hoeft er ook geen PHP op je PC te draaien.
Pipo, da's mooi ... maar ik programmeer die talen niet en het kost me vast een eeuwigheid om dat te gaan leren ;-)