2010-01-14 7 views
0

Je tente d'exécuter un fichier de commandes à partir du code C# à l'aide de la classe Process. Batch obtient des paramètres, passés en guillemets dans ProcessStartInfo.Arguments. Tout fonctionne bien, outre le fait que lorsque le lot est exécuté il est pré-pendu avec quelques symboles ascii garbage, je ne peux pas comprendre d'où ils viennent. script batch semble simple:Exécution d'un lot avec paramètres à l'aide du processus

%1 -S .\sqlexpress -i %2 

Lot est juste en cours d'exécution sqlcmd.exe à un endroit précis et passe dans le script SQL à exécuter. Lorsque j'essaie ceci manuellement en ligne de commande, cela fonctionne très bien, donc ce n'est pas la commande générée elle-même. Des idées?

C'est ce que construire résultat de l'exécution du script ressemble: [

[gallio] D:\Development\project_A\Trunk\build\compile>"D:\Development\project_A\Trunk\build\tools\sqlcmd\SQLCMD.EXE" -S .\sqlexpress -i "C:\Temp\project_A_consolidated_sql_scripts.sql" 
    [gallio] '' is not recognized as an internal or external command, 
    [gallio] operable program or batch file. 
    [gallio] Creating project_A database 
    [gallio] Changed database context to 'master'. 
    [gallio] Creating project_ADBUser login 
    [gallio] Changed database context to 'project_A'. 
    [gallio] Creating project_ADBUser user 
    [gallio] Creating project_A Schema 
    [gallio] Changed database context to 'project_A'. 

] Image

Merci.

Répondre

1

Je suppose que vous avez là une nomenclature UTF-8 (byte order mark). Que ce soit dans le fichier batch lui-même ou l'argument de la ligne de commande est difficile à dire si. D'où obtenez-vous les données?

+0

La ligne paramétrée (en haut) se trouve dans un fichier RunScript.bat. En ce qui concerne les paramètres, ils sont injectés via l'instance de processus I invoke dans mon code C#, en les passant en paramètre de chaîne. J'ai dû insérer une nouvelle ligne dans RunScript.bat pour que cela fonctionne, sinon cela échouerait complètement. Cela fonctionne de cette façon, mais cette erreur est tellement ennuyeuse ... Merci de votre aide. –

+0

Merci, c'était exactement ça. J'ai utilisé Notepad ++ avec l'éditeur HEX pour supprimer ces trois caractères et l'erreur avait disparu. –

Questions connexes