Batch die einiges kann :o

  • Sonstige

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von C-Sharp.

    Batch die einiges kann :o

    Hallo community,

    ich möchte mich mal mit Batch beschäftigen. Es ist nicht so das ich das nicht schon ein bißchen kann aber ich habe gerade voll das Problem...

    Quellcode

    1. ##############################################################################
    2. Hier kommt einmal eine lange Beschreibung rein was mit dieser Textdatei passieren soll und wie sie ausgefüllt wird
    3. etc.
    4. ##############################################################################
    5. description
    6. hier kommt einmal eine Beschreibung rein
    7. keywords
    8. es werden die Keywords für eine Suchfunktion definieren
    9. privacy-url
    10. https://www.example.com
    11. software-url
    12. https://www.example.com
    13. title
    14. name_test
    15. ##############################################################################
    16. Ende des Dokuments
    17. ##############################################################################


    Ich habe wie oben zu sehen Textdateien mit verschiedenem Inhalt. Immer bei den Stichworten wie z.B. "description", "keywords", "privacy-url", etc. soll eine neue Textdatei erstellt werden mit genau diesem Stichwort als Dateiname. In diese Datei soll dann der Text der unter den jeweiligen Stichworten steht abgespeichert werden. Natürlich alles automatisch per Skript. Die Textlänge unter den Stichworten kann variabel sein in der Länge der Zeilen sowie in der Zeilenanzahl. Der Header und die Fußzeile soll nicht beachtet werden...

    Ich hoffe ich konnte das Problem entsprechend "gut" beschreiben. Wenn mir jemand einen Tipp hat wie ich das in batch-Skript löse, dann her damit. Wenn jemand der Meinung ist eine andere Progsprache ist da einfach dann auch sagen. Es muss nciht zwingend Batch sein.

    Ich danke schonmal für eure Mühe :)
    Grüße
    @mys3lf System.IO wenn dann bitte benutzen. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    sielbick schrieb:

    mit Batch beschäftigen

    Trade schrieb:

    System.IO wenn
    seit wann gibt es denn in Batch System.IO 8|

    @sielbick versteh ich dich richtig das du in Batch 5 textdokumente erstellen möchtest? (description, keywords, privacy-url, software-url,title)
    Wenn du etwas anderes meinst, erklär es bitte genauer. Ich hab es dann nämlich nicht verstanden ._.

    Wenn du tasächlich nur .txt Dokumente erstellen willst (und ja variablen kannst du auch verwenden)

    Quellcode

    1. echo Hallo! > Test.txt
    2. echo Dies ist eine Beschreibung. >> Test.txt
    3. echo Weitere Infos gibt es in... >> Test.txt

    LG Ruerte

    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    @Ruerte Ich habe mys3lf zitiert, nicht den TE.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Trade hab ich jetzt auch gesehen ups ._.

    @mys3lf der TE hat eigentlich nach Batch gefragt auch wenn ich dir recht gebe das dies (soweit ich es verstanden habe in .NET umsetzbar ist)
    wir sollten also erst mal auf eine antwort des TE warten ob es wirklich Batch sein soll oder ob er es auch mit .NET umsetzen Darf / Kann / Will

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Ich hab jetzt hier stackoverflow.com/questions/13…multiple-lines-in-multipl gefunden, wie man eine String über eine Zeile hinweg ersetzt. Es dürfte möglich sein das Script so umzuschreiben, dass der String nicht ersetzt sondern in ne Textdatei geschrieben wird.
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

    @sielbick Batch ist veraltet... seit Windows Vista wird die Entwicklung von PowerShell vorangetrieben. Damit ist dein Problem relativ schnell zu lösen ohne große Entwicklungsumgebung usw.

    Einfach mit Get-Content deine Datei-(en) einlesen und an den entsprechenden Stellen austeilen.

    Edit (15:24)

    Hab mir mal die Mühe gemacht (rein aus Interesse)...

    Spoiler anzeigen

    Quellcode

    1. $content = Get-Content -Path ".\*.txt"
    2. foreach($line in $content)
    3. {
    4. if(($line -eq "description") -or ($line -eq "keywords")-or ($line -eq "privacy-url")-or ($line -eq "software-url")-or ($line -eq "title"))
    5. {
    6. $allowToWrite = $true
    7. $filename = $line
    8. }
    9. elseif($line.StartsWith("#"))
    10. {
    11. $allowToWrite = $false
    12. }
    13. elseif($allowToWrite)
    14. {
    15. $line | Out-File -FilePath ".\output\$filename.txt" -Append
    16. }
    17. }

    Dateien
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „C-Sharp“ ()

    Powershell Scripte haben die Endung .ps1. Um diese auszuführen musst du die Powershell als Admin ausführen und Set-ExecutionPolicy auf Unresisted stellen. Sonst werden keine Scripte ausgeführt, da sie eben davon geblockt werden. Davor kannst du mit Get-ExecutionPolicy den Standart auslesen, um es nach dem Ausführen des Scripts wieder zurück zu stellen. Standart ist zumindest unter win 8.1 Resisted.

    Um das Script auszuführen musst du entweder den absoluten Pfad kenne, Doppelklick auf das Script oder wenn der Pfad der PS im selben Ordner ist ./DeinScript.ps1
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mokki“ ()

    und wie stelle ich SetExecutionPolicy auf Unresisted?

    Oder wie führe ich ühaupt die PS aus?

    ich hab grad einen versuch inne Konsole gemacht, aber ein SetExecutionPolicy - Befehl wird in der Befehls-Auflistung nicht angegeben.

    Edit: ups - wird ja doch - habich übersehen!


    hmm - mach ich was falsch oder du?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    ErfinderDesRades schrieb:

    und wie stelle ich SetExecutionPolicy auf Unresisted?


    Was @Mokki meint ist der Befehl Set-ExecutionPolicy Unrestricted.

    Würde ich aber nicht empfehlen da dort "alle" PowerShell Befehle ausgeführt werden können.

    Du kannst aber mal den Befehl Set-ExecutionPolicy RemoteSigned eingeben... (Damit werden Signierte und selbst erstellte Skripte ausgeführt. Sollte eigentlich klappen.)

    Wenn du ein x64 System verwendest musst du drauf achten welche PowerShell Version du einsetzt (x86 oder x64). Gegenbenfalls halt für beide die Skriptausführung mit dem o.g. Befehl freischalten.



    Für den Befehl müssen natürlich Admin-Berechtigungen vorhanden sein (Als Administrator starten)



    Noch ein Tipp @ErfinderDesRades ich würde das PowerShell Konsolenfenster direkt starten und nicht über die CMD-Konsole hin und her wechseln... In der PowerShell stehen natürlich auch alle CMDLET der CMD zur Verfügung.

    Das Skript kannst du ausführen indem du "Rechtsklick > Mit PowerShell ausführen" anklickst, in einer PowerShell-Konsole mit ".\Test.ps1" oder den absoluten Pfad aufrufst oder in Skripten mit "Invoke-Expression .\test.ps1" bzw. ". .\test.ps1"

    Viele Grüße
    C-Sharp

    Edit: Glückwunsch zu 26.000 Beiträgen :thumbup:
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!

    C-Sharp schrieb:

    ich würde das PowerShell Konsolenfenster direkt starten
    Ich liebe solche Tippse <3
    Kannst du mir nun auch verraten, wie das geht?

    Edit - habs gefunden

    Nu hab ich nur noch das Problem, dass ich garnet weiß, was vorher eingestellt war.
    Andererseits möchte ichs gerne aber wieder zurückstellen - was schlagt ihr vor, wie's am wahrscheinlichsten vorher war?

    welchen Vorteil hats eigentlich, die PS-Konsole aufzurufen statt der cmd?
    Abgesehen von der anderen Farbe verhält sich das ziemlich gleich:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()