Cannot execute Windows commands via Python in 64-bit

N

nsjmetzger

I have a script that runs fine in Windows 2003 (32-bit). It basically
calls the Windows defrag command. When I try the exact same code on
Windows 2003 (64-bit) I get the following message:

C:\Scripts>autodefrag.py
Starting defragment: defrag -v C: >>c:/Scripts/DEFRAG20070502.log
'defrag' is not recognized as an internal or external command,
operable program or batch file.

I have tried defrag.exe and even giving it the full path to
defrag.exe. Always the same result. Here is the python code that is
generating this error:

cmd = "defrag -v C: >>c:/Scripts/DEFRAG20070502.log"
print "Starting defragment: ", cmd
errorlevel = os.system(cmd)


Anyone know what the heck is going on and how to fix it? This code
works fine on my 32-bit windows machines.
Thanks.
 
L

Larry Bates

I have a script that runs fine in Windows 2003 (32-bit). It basically
calls the Windows defrag command. When I try the exact same code on
Windows 2003 (64-bit) I get the following message:

C:\Scripts>autodefrag.py
Starting defragment: defrag -v C: >>c:/Scripts/DEFRAG20070502.log
'defrag' is not recognized as an internal or external command,
operable program or batch file.

I have tried defrag.exe and even giving it the full path to
defrag.exe. Always the same result. Here is the python code that is
generating this error:

cmd = "defrag -v C: >>c:/Scripts/DEFRAG20070502.log"
print "Starting defragment: ", cmd
errorlevel = os.system(cmd)


Anyone know what the heck is going on and how to fix it? This code
works fine on my 32-bit windows machines.
Thanks.
Sounds like system can't find defrag. Usually this is because of a path
issue. Are you running the script in the foreground or scheduled? Can
you open a command prompt and enter the command and have it work? If
you give full path, this shouldn't be the problem.

-Larry
 
M

minitotoro

Sounds like system can't find defrag. Usually this is because of a path
issue. Are you running the script in the foreground or scheduled? Can
you open a command prompt and enter the command and have it work? If
you give full path, this shouldn't be the problem.

-Larry

I have tried foreground and scheduled (neither works). I can run
defrag from the command prompt with no problem. If I give it the full
path in the script it still fails. I am completely befuddled. Help.
 
L

Larry Bates

minitotoro said:
I have tried foreground and scheduled (neither works). I can run
defrag from the command prompt with no problem. If I give it the full
path in the script it still fails. I am completely befuddled. Help.
Copy and paste the traceback here for us.

-Larry
 
M

minitotoro

I'm sorry, but I'm not familiar with traceback. How do I use it?
Thanks.

Upon further investigation it turned out to be a windohs 64-bit issue
(which is what I was afraid of). I did however find an asinine work
around.

Make a copy of defrag.exe from the system32 folder and paste it in the
same directory as the python script. Voila! It now works. Piece of
junk windohs... :-S
 
D

Dennis Lee Bieber

Upon further investigation it turned out to be a windohs 64-bit issue
(which is what I was afraid of). I did however find an asinine work
around.

Make a copy of defrag.exe from the system32 folder and paste it in the
same directory as the python script. Voila! It now works. Piece of
junk windohs... :-S

Out of curiosity, what are the contents of PATH under the two OS
variants?

Maybe all you needed was to add the 32-bit defrag directory to the
END (so stuff in it doesn't conflict with any 64-bit stuff of the same
name) of the PATH environment variable.
--
Wulfraed Dennis Lee Bieber KD6MOG
(e-mail address removed) (e-mail address removed)
HTTP://wlfraed.home.netcom.com/
(Bestiaria Support Staff: (e-mail address removed))
HTTP://www.bestiaria.com/
 
T

Tim Roberts

minitotoro said:
Upon further investigation it turned out to be a windohs 64-bit issue
(which is what I was afraid of). I did however find an asinine work
around.

Make a copy of defrag.exe from the system32 folder and paste it in the
same directory as the python script. Voila! It now works. Piece of
junk windohs... :-S

If you are using a 32-bit Python, then all references you make to
\windows\system32 are automatically rewritten to \windows\syswow64. If
defrag.exe is not present in \windows\syswow64, that could explain it.

Unbelievable but true. Although we were all smart enough to handle the
transition from \windows\system in Win16 to \windows\system32 in Win32,
Microsoft apparently believes programmers have all grown too stupid to
handle the transition to Win64 on our own.

Some registry references are also silently rewritten.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,898
Latest member
BlairH7607

Latest Threads

Top