Windows-Batch-Datei Müssen Zeilenumbrüche entfernen von parameter
Habe ich ein powershell-Skript, das eine Abfrage ausführen und die Ergebnisse nach Excel exportieren. Ich will Haken Sie diese in das SQL Studio Management Studio (2008)'s externe tools. SSMS wird nicht zulassen, dass powershell-Skripts, so bin ich über eine batch-Datei, um es zu bekommen begann.
In der externen tools Abschnitt können Sie angeben, einige vordefinierte Argumente. Das argument, das ich will, ist als "text". Dieses argument übergeben, alles, was hervorgehoben ist, können Sie das tool (batch-Datei). Meine batch-Datei geht dann das argument auf, um ein powershell-Skript.
Das problem ist, dass wenn der Benutzer eine Abfrage, die sich über mehrere Zeilen markiert, dann das powershell-Skript schlägt fehl, weil die Zeilenumbrüche. Es scheint, es wäre relativ einfach, Streifen Sie Sie heraus, oder noch besser, ersetzen Sie Sie durch ein Leerzeichen?
Hier meine batch Datei:
echo %~1
call powershell ^& 'c:\temp\ExportSQL.ps1' -query "%~1"
Meine Frage ist, wie kann ich ersetzen, newlines und carriage-returns von %1 mit einem Leerzeichen vor der übergabe an das powershell-Skript? TIA.
InformationsquelleAutor Malk | 2011-04-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, ich kann nicht glauben, dass Sie wirklich Zeilenvorschübe in Ihre parameter
%1
, wie es möglich ist, aber ein bisschen kompliziert zu erreichen.Um diesen zu kontrollieren, die Sie nutzen könnten
Griff CR und linefeed Zeichen, die Sie verwenden, die verzögerte Erweiterung, als Prozent expansion von solchen Inhalten ist nicht möglich.
Mit Prozent expansion CR ' s sind immer entfernt, Zeilenvorschübe entfernt den rest der Zeile oder in einem block-Kontext, in dem Sie fügen Sie eine neue Befehlszeile.
Also, es ist nicht möglich, mit Inhalten, mit Zeilenwechsel in einem parameter wie
%1
..%9
.Müssen Sie es in einer Variablen gespeichert.
Vorausgesetzt, Sie haben die Inhalte mit Zeilenumbrüchen in eine variable, könnten Sie ersetzen Sie es mit Leerzeichen.
Die leeren Zeilen in diesem Beispiel sind wichtig für das Ergebnis.
--- Ausgang ---
Vielen Dank für diese. Ihre Technik von vor einem newline Gaben mir die prod, die ich brauche um mein problem zu lösen: stackoverflow.com/a/9626257/412335
Ja, die FOR/F Tokens splitten ist eines der nützlichen Dinge, die Sie tun können, mit einem
<linefeed>
Wie dos-batch-variable newline hack funktioniertInformationsquelleAutor jeb