Gibt set-variable erst beim zweiten einlesen aus
Hallo,
ich programmiere grade ein script zur verarbeitung von 6000 pdf-dateien der intranet-seite meiner firma.
so, ich kann den code nur in eine zeile schreiben
so siehts aus:
also es sind drei script.
1.
pdftotext.exe "C:\xampp\htdocs\Arbeitssicherheit\Betriebsanweisungen\Gefahrstoffe\1.pdf"
konvertiert pdf in txt
2.
set datei="C:\xampp\htdocs\Arbeitssicherheit\Betriebsanweisungen\Gefahrstoffe\1.txt"&echo %datei%&for /f %i in ("%datei%") do set dateiii=%~ni&echo %dateiii%&echo "<?php header("Location: %dateiii%.pdf"); exit(); ?>" >> %datei%
schreibt in die die txt "<?php header("Location: 1.pdf"); exit(); ?>"
3.
set datei="C:\xampp\htdocs\Arbeitssicherheit\Betriebsanweisungen\Gefahrstoffe\1.txt"&echo %datei%&for /f %i in ("%datei%") do set dateii=%~di%~pi&echo %dateii%&for /f %i in ("%datei%") do set dateiii=%~ni&echo %dateiii%&ren %dateii%%dateiii%.txt %dateiii%.php
bennent 1.txt in 1.php um
so ich habe aber folgendes problem:
1. funktioniert komplett
bei 2. funktioniert das ausgeben der richtigen variable erst beim 2ten einlesen und gleichzeitigen auslesen mit echo
in set ist die variable aber schon nach dem erstenmal richtig gespeichert.
das ist schon sehr komisch
also hier nochmal das problem veranschaulicht:
set var="bla"&echo %var%
rem wird das ausgeben was vorher in der var drin stand aber nicht bla.
ich hoffe ihr könnt mir helfen.
sitze jetz schon ewigkeiten daran und das per hand an 6000 dateien geht auch nicht...
ich programmiere grade ein script zur verarbeitung von 6000 pdf-dateien der intranet-seite meiner firma.
so, ich kann den code nur in eine zeile schreiben
so siehts aus:
also es sind drei script.
1.
pdftotext.exe "C:\xampp\htdocs\Arbeitssicherheit\Betriebsanweisungen\Gefahrstoffe\1.pdf"
konvertiert pdf in txt
2.
set datei="C:\xampp\htdocs\Arbeitssicherheit\Betriebsanweisungen\Gefahrstoffe\1.txt"&echo %datei%&for /f %i in ("%datei%") do set dateiii=%~ni&echo %dateiii%&echo "<?php header("Location: %dateiii%.pdf"); exit(); ?>" >> %datei%
schreibt in die die txt "<?php header("Location: 1.pdf"); exit(); ?>"
3.
set datei="C:\xampp\htdocs\Arbeitssicherheit\Betriebsanweisungen\Gefahrstoffe\1.txt"&echo %datei%&for /f %i in ("%datei%") do set dateii=%~di%~pi&echo %dateii%&for /f %i in ("%datei%") do set dateiii=%~ni&echo %dateiii%&ren %dateii%%dateiii%.txt %dateiii%.php
bennent 1.txt in 1.php um
so ich habe aber folgendes problem:
1. funktioniert komplett
bei 2. funktioniert das ausgeben der richtigen variable erst beim 2ten einlesen und gleichzeitigen auslesen mit echo
in set ist die variable aber schon nach dem erstenmal richtig gespeichert.
das ist schon sehr komisch
also hier nochmal das problem veranschaulicht:
set var="bla"&echo %var%
rem wird das ausgeben was vorher in der var drin stand aber nicht bla.
ich hoffe ihr könnt mir helfen.
sitze jetz schon ewigkeiten daran und das per hand an 6000 dateien geht auch nicht...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 169539
Url: https://administrator.de/forum/gibt-set-variable-erst-beim-zweiten-einlesen-aus-169539.html
Ausgedruckt am: 24.12.2024 um 01:12 Uhr
17 Kommentare
Neuester Kommentar
moin Sibbel,
aus was für einen Grund kannst Du nur eine CodeZeile schreiben?
wenn Du nur den Dateipfad oder den Namen für das Generieren des neuen Namens brauchst, dann benötigst Du doch keine UmgebungsVariable. Es reicht eine ForVariable!
wenn Du diesen Text
aus einer TXT holst wirst Du beim Einzeiler weniger Probleme bekommen.
liesen sich diese 3 Scripts nicht zu einem Zusammenziehen?
Gruß Phil
aus was für einen Grund kannst Du nur eine CodeZeile schreiben?
wenn Du nur den Dateipfad oder den Namen für das Generieren des neuen Namens brauchst, dann benötigst Du doch keine UmgebungsVariable. Es reicht eine ForVariable!
wenn Du diesen Text
"<?php header("Location: 1.pdf"); exit(); ?>"
liesen sich diese 3 Scripts nicht zu einem Zusammenziehen?
Gruß Phil
Aloha,
nur so nebenbei:
Warum schreibst du das hier eigentlich als batch-like-Skript, wenn es doch nur Einzeiler für den cmd sind? (oder sehe ich die doppelten Prozentzeichen nur nicht?)
greetz André
nur so nebenbei:
- alles mit
&
zu verknüpfen ist ja der reinste Bandwurm, selbst ich als Einzeilerfreund bekomme das Grauen dabei ... (manchmal sind Einzeiler einfach unangebracht) - das
set
ist eben insofern überflüssig, dass du einfach (bei einer sinnvollerenfor
-Strukturierung) dann sinnvollerweise%~dpni.txt
nutzen kannst ... und wenn der Ausgang eh die .txt ist, kannst du auch gleich%~fi
nehmen
Warum schreibst du das hier eigentlich als batch-like-Skript, wenn es doch nur Einzeiler für den cmd sind? (oder sehe ich die doppelten Prozentzeichen nur nicht?)
greetz André
Hallo,
wenn die Dateien wirklich so nummeriert sind (1,2,3,...,10,11,...,6000) dann versuch mal das:
Und wenn einfach alle pdfs im Ordner bearbeitet werden sollen:
MfG,
Mathe172
wenn die Dateien wirklich so nummeriert sind (1,2,3,...,10,11,...,6000) dann versuch mal das:
@echo off
pushd "C:\xampp\htdocs\Arbeitssicherheit\Betriebsanweisungen\Gefahrstoffe\"
REM Obergrenze anpassen
for /l %%A in (1,1,6000) do (
pdftotext.exe "C:\xampp\htdocs\Arbeitssicherheit\Betriebsanweisungen\Gefahrstoffe\%%A.pdf"
>>"%%A.txt" echo ^<?php header^("Location: %%A.pdf"^); exit^(^); ?^>
ren "%%A.txt" "%%A.php"
)
@echo off
pushd "C:\xampp\htdocs\Arbeitssicherheit\Betriebsanweisungen\Gefahrstoffe\"
for /f %%A in ('dir /b *.pdf') do (
pdftotext.exe "C:\xampp\htdocs\Arbeitssicherheit\Betriebsanweisungen\Gefahrstoffe\%%A"
>>"%%~nA.txt" echo ^<?php header^("Location: %%A"^); exit^(^); ?^>
ren "%%~nA.txt" "%%~nA.php"
)
MfG,
Mathe172
Du benutzt in der Zeile den Befehl
FOR /f ...%i ist Die ForVariable.
Eine BefehlsZeile wird eine in dieser Zeile gesetzte Variable nicht als Aktuell gesetzte Variable Auflösen. Es sei denn Du Verwendest "Setlocal Enable DelayedExpansion" aber schon Vorher.
ich sehe keinen Grund den Bandwurm nicht auf einzelne Zeilen zu entblättern.
Übergib die Daten doch per Batchparameter %1 oder arbeite das ganze Verzeichnis mit einer Forschleife ab.
Also das hab ich jetzt Rausklamüstert.
PS.: was für Bibers counter
Gruß Phil
FOR /f ...%i ist Die ForVariable.
Eine BefehlsZeile wird eine in dieser Zeile gesetzte Variable nicht als Aktuell gesetzte Variable Auflösen. Es sei denn Du Verwendest "Setlocal Enable DelayedExpansion" aber schon Vorher.
ich sehe keinen Grund den Bandwurm nicht auf einzelne Zeilen zu entblättern.
Übergib die Daten doch per Batchparameter %1 oder arbeite das ganze Verzeichnis mit einer Forschleife ab.
@echo off
pushD "C:\xampp\htdocs\Arbeitssicherheit\Betriebsanweisungen\Gefahrstoffe"
for %%i in (*.txt) do (
echo %%~ni
>&3 echo "<?php header("Location: %%~ni.pdf"); exit(); ?>"
) 3>>%%~ni.php
popD
Also das hab ich jetzt Rausklamüstert.
PS.: was für Bibers counter
bennent 1.txt in 1.php um
Gruß Phil
Aloha,
hm, mathe arbeitet mit
Und wenn du zig Unterverzeichnisse hast, benötigst du auch den Schalter
wenn ich das recht überblicke
greetz André
edit: aha, die pdfto... liegt also ... dann sollte hier der gesamte Pfad rein
hm, mathe arbeitet mit
pushd
und das ohne popd
tze tze tze *fg*.Und wenn du zig Unterverzeichnisse hast, benötigst du auch den Schalter
/s
im dir
, desweiteren wäre ich für@echo off
for /f %%a in ('dir /b /s "C:\xampp\htdocs\Arbeitssicherheit\Betriebsanweisungen\Gefahrstoffe\*.pdf"') do (
REM wo liegt eigentlich die pdftotext.exe? Im System32?
pdftotext.exe "%%a"
>>"%%~dpna.txt" echo ^<?php header^("Location: %%~nxa"^); exit^(^); ?^>
ren "%%~dpna.txt" "%%~na.php"
)
pause
goto :eof
wenn ich das recht überblicke
greetz André
edit: aha, die pdfto... liegt also ... dann sollte hier der gesamte Pfad rein
..., nur leider löscht er dabei gleich den gesamten inhalt der datei...
nö die PHP Dateien werden nur Angefügt/erstellt.Sky's schnipsel arbeitet nur die vorhandenen PDFs ab.
Gruß Phil