By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,630 Members | 1,252 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,630 IT Pros & Developers. It's quick & easy.

Cannot execute Windows commands via Python in 64-bit

P: n/a
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.

May 2 '07 #1
Share this Question
Share on Google+
6 Replies


P: n/a
ns********@gmail.com wrote:
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
May 2 '07 #2

P: n/a
On May 2, 3:07 pm, Larry Bates <larry.ba...@websafe.comwrote:
nsjmetz...@gmail.com wrote:
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
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.

May 2 '07 #3

P: n/a
minitotoro wrote:
On May 2, 3:07 pm, Larry Bates <larry.ba...@websafe.comwrote:
>nsjmetz...@gmail.com wrote:
>>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

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
May 2 '07 #4

P: n/a
On May 2, 3:46 pm, Larry Bates <larry.ba...@websafe.comwrote:
minitotoro wrote:
On May 2, 3:07 pm, Larry Bates <larry.ba...@websafe.comwrote:
nsjmetz...@gmail.com wrote:
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
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
I'm sorry, but I'm not familiar with traceback. How do I use it?
Thanks.

May 2 '07 #5

P: n/a
On May 2, 4:15 pm, minitotoro <nsjmetz...@gmail.comwrote:
On May 2, 3:46 pm, Larry Bates <larry.ba...@websafe.comwrote:
minitotoro wrote:
On May 2, 3:07 pm, Larry Bates <larry.ba...@websafe.comwrote:
>nsjmetz...@gmail.com wrote:
>>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
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

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

May 4 '07 #6

P: n/a
minitotoro <ns********@gmail.comwrote:
>
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.
--
Tim Roberts, ti**@probo.com
Providenza & Boekelheide, Inc.
May 5 '07 #7

This discussion thread is closed

Replies have been disabled for this discussion.