2016-06-08 5 views
0

Ich versuche, CSV (und andere Dateien) aus zahlreichen Unterordnern zu exportieren. Dies sind Archivordner, die zum Löschen auf unseren Datenbankserver fallen gelassen werden. In jedem Fall habe ich zwei Codezeilen gefunden, die funktionieren (oder funktionierten), aber wenn sie in eine Bat-Datei geladen oder von xp_cmdshell aufgerufen werden, funktionieren Befehle nicht.Windows Server 2008 Befehl funktioniert in CMD, aber nicht in Batch-Datei

Diese Befehle sollen alle Dateien extrahieren, die sich in mehreren (hunderten) Unterverzeichnissen befinden. Auch diese funktionieren, wenn ich sie manuell in die Eingabeaufforderung einfüge, aber nicht, wenn sie über bat (oder cmd-Datei) oder xp_cmdshell von SQL-Server aufgerufen werden.

for /f "tokens=*" %a in ('dir /b /s /a-d "C:\SPSData\UTDB1_Stage1"') do @move "%a" "C:\SPSData\UTDB1_Stage1" 

MOVE C:\SPSData\UTDB1_Stage1\ *\ * C:\SPSData\UTDB1_Stage1\ 
+1

"* dropping droped *"? "* funktioniert in CMD aber nicht in [...] CMD *"? Vielleicht möchten Sie diesen Titel noch einmal überdenken. – Clifford

+0

Streng ist es kein MS-DOS-Befehl - es ist ein * Windows-Shell-Befehl *; Es wird nicht auf das MS-DOS-Subsystem oder "command.com" ausgeführt, und in Win64 gibt es in keinem Fall ein MS-DOS-Subsystem. 'cmd.exe' ist eine echte Windows-Programmdatei und bezieht sich nicht auf MS-DOS, außer in dem Sinne, dass sie eine Reihe von Befehlen und Befehlssyntax teilt. – Clifford

Antwort

2

Wenn in einer Batch-Datei verwendet, müssen Sie die % Variable Einführungs entkommen, indem sie mit einer anderen % prefixing - ersetzen %a mit %%a:

for /f "tokens=*" %%a in ('dir /b /s /a-d "C:\SPSData\UTDB1_Stage1"') do @move "%%a" "C:\SPSData\UTDB1_Stage1" 

ich diesen Aufruf vorstellen würde über xp_cmdshell das gleiche erfordert .

+0

Danke Mann, es ist mir peinlich zuzugeben, wie viele Stunden ich damit verbracht habe. Wahrlich, du hast meinen Tag/Woche gemacht. – Ryan

+0

@Ryan: Gern geschehen - es ist ein ziemlich geheimnisvolles Wissen, das nur denjenigen bekannt ist, die ihre Zähne bei MS-DOS schneiden. – Clifford

Verwandte Themen