fwrite() klappt nicht

peper

Erfahrenes Mitglied
PHP:
	$batch = '@echo off';
	$batch .= 'rem ** xxx Intranet Druckerskript **';
	$batch .= 'rem **  alle vorhandenen (Netzwerk-)Drucker loeschen **';
	$batch .= '\\wxxx\xxx\xxx/f';
    $batch .= 'rem **  alle vorhandenen (Lokale-)Drucker loeschen **';
	$batch .= 'rundll32 printui.dll,PrintUIEntry /dl /n "'.$FBBezeichnung.'"\n';
	$batch .= 'echo "###---xxx:: Drucker einrichten fuer '.$Hostname.': ### \n';
	$batch .= 'echo \n\n\n\n';
	$batch .= '"Es werden folgende Drucker eingebunden:"\n';
	$batch .= $FBBezeichnung.' in Raum '.$FBStandort.' \n';
	$batch .= $SWDrucker.' in Raum '.$SWStandort.' Platznummer'.$SWPlatznummer.' \n';
	$batch .= 'rem ** gemeinsamer farbdrucker';
	$batch .= 'rem **port erstellen\n';
	$batch .= 'cscript %Windir%\system32\prnport.vbs -a -r IP_'.$FBIP.'-h'.$FBIP.'-o raw -n 9100 \n';
	$batch .= 'rem **drucker erstellen';
	$batch .= 'rundll32 printui.dll,PrintUIEntry /if /b "'.$FBBezeichnung.'" /f "'.$FBPfad.'" /r "IP_'.$FBIP.'" /m "'.$FBDruckertyp.'"\n';
	$batch .= 'rem **individueller drucker pro Arbeitsplatz**\n';
	$batch .= 'ping -n 1'.$SWIP.' \n';
	$batch .= 'if %errorlevel==0 \\xxx\xxx\xxx/cd "\\'.$SWIP.'\\'.$SWBezeichnung.'"';
	$batch .= 'if %errorlevel==1 echo "Der Host '.$SWIP.'in Raum '.$SWStandort .'Platznummer'.$SWPlatznummer.' scheint nicht aktiv zu sein," ';
	$batch .= 'echo "bitte '.$SWIP.' einschalten und Skript erneut ausfuehren!"';
	$batch .= 'echo "Drucker erfolgreich eingerichtet. Bitte achten Sie auf die verhaeltnisgemaesze Verwendung von Druckern,"';
	$batch .= 'echo "auf die korrekte Verwendung von Druckmaterialien und melden Sie ggf. auftretende Probleme."';
	$batch .= 'echo \n\n\n';
	$batch .= 'echo "Sollten Sie außerdem Hilfe benoetigen, koennen Sie sich an das BBi-Kiel-Admin-Team wenden: "';
	$batch .= 'echo "(xxxsee II, Tel. xxx/xxx-xxx, E-Mail: team-xxx@xxx-net.de)" \n';
	$batch .= 'pause';


         $handle = fopen('./scripts/'.$Hostname.'-'.date("Y-m-d").'.bat',w);
         $handle = fwrite($handle,$batch);
         $fclose($handle);

Das skript soll eine Batch Datei erstellen die es ermöglicht Drucker einzubinden.
Ganz unten will er fwrite nicht ausführen, da er meint das batch kein string ist..
Könnt ihr mir vielleicht helfen.

LG Lars
 
Nach einigen kleinen Änderungen klappts bei mir aufm System wunderbar:

PHP:
$handle = fopen("./scripts/'.$Hostname.'-'.date("Y-m-d").","w+");
fwrite($handle, $batch); //$handle solltest du nicht mit dem Rückgabewert von fwirte überschreiben
fclose($handle); //fclose sollte ein Funktionsaufruf und keine Variablendeklaration sein

Wenn jetzt was nicht geht, liegts vermutlich daran, dass er keine Datei mit dem Namen an dem Ort öffnen kann.
 
So jetzt wird zwar das script gepeichert...Allerdings kann er die Zeilenumbrüche nicht in die Bat Datei reinschreiben.
Wißt ihr wie ich die reinbekomme
LG Lars
 
Zeilenumbrücke werden nur in doppelten Anführungszeichen geparsed, also:
PHP:
$keinUmbruch = 'Ersze Zeile \n Zweite Zeile';
$umbruch = "Erste Zeile \n Zweite Zeile";

Oder du benutzt [phpf]chr[/phpf]:
PHP:
$batch = 'echo "Batchfile"' . chr(10);
 
Zurück