in reply to Re: Executing series of system commands in a shell(cmd.exe)
in thread Executing series of system commands in a shell(cmd.exe)
My approach in Python is:#!/usr/bin/perl use IPC::Open3; my($wtr, $rdr, $err); $pid = open3($wtr, $rdr, $err, 'cmd.exe') or die "$!"; print "PID: $pid\n"; # Read the file containing commands # open (FHR, "Build_Cmd_List.txt") or die "$!"; # my @commands = <FHR>; # close(LIST); my $expected = '<$$$>\r\n'; my $prompt_cmd = 'prompt $L$$$$$$$G$_'; my @commands = ($prompt_cmd, 'set Build_DIR=c:\build_proj1','md %Build +_DIR%', 'cd %Build_DIR%', 'echo Inside %Build_DIR%','exit'); for my $cmd (@commands) { $| = 1; #--------------------------------- # Set of statements to replace tokens(using regex) #--------------------------------- print "Executing command after token replacement: $cmd\n"; print $wtr "$cmd\r\n"; # Read the output & error message of the command executed #while(<$rdr>){ # last if m/\Q$expected\E/ ; # print; #} }
import subprocess # Read the File containing list of commands fhr = open("sample_file",'r') # SHELL FOR EXECUTING BUILD COMMANDS SHELL_CMD = "cmd.exe" shellproc = subprocess.Popen(SHELL_CMD,shell=True,stdin=subprocess +.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) expected = '<$$$>\r\n' prompt_cmd = 'prompt $L$$$$$$$G$_' shellproc.stdin.write('%s\n' % prompt_cmd) # Read the file line by line for line in fhr: ## ## SET of Statements to replace all the tokens cmd = <## processed line##> shellproc.stdin.write('%s\n' % cmd) while True: output = shellproc.stdout.readline() if output.endswith(expected): break logger.info(output) print "Waiting for subshell to terminate" shellproc.stdin.write("exit\n") shellproc.wait() print "Successfully Executed all the Commands [Done]"
|
|---|