You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python脚本中将自定义变量作为命令行参数传入CMD执行

问题修复说明

核心错误点

  • 你把print()的返回值赋值给了result:print()函数执行后只会返回None,根本不会把你拼接的命令字符串存到result里
  • os.system('cmd /k "result"')里的result是写死的字符串,不是你定义的变量,CMD执行的是字面量result,当然识别不出来
  • 路径拼接逻辑不合理:如果用户输入的源/目标路径已经带盘符,你强制拼接:/会导致路径错误
  • 没有处理带空格的路径:如果源/目标路径包含空格,robocopy会识别失败,需要给路径加双引号包裹

修正后代码

import argparse, sys, os

if __name__ == '__main__':
    # 初始化参数解析器
    parser = argparse.ArgumentParser(
        description="robocopy 执行脚本"
    )
    
    # 添加位置参数
    parser.add_argument('robocopy', help="传入 robocopy 即可执行拷贝命令")

    # 解析参数
    args = parser.parse_args()
    src = input("输入源目录: ").strip()
    des = input("输入目标目录: ").strip()
    opt = "/E /Z /ZB /R:5 /TBD /NP /V /MT:16"
    print(args)
    robocopy_cmd = None
    if args.robocopy == "robocopy":
        # 给路径加双引号避免空格导致识别错误,不需要强制加:/,由用户输入完整路径
        robocopy_cmd = f'robocopy "{src}" "{des}" {opt}'
        print(f"即将执行的命令: {robocopy_cmd}")

    # 只有命令生成成功才执行CMD
    if robocopy_cmd:
        # 把变量拼接到CMD执行语句里,不要写死字符串
        os.system(f'cmd /k "{robocopy_cmd}"')

使用说明

  • 执行脚本时需要传入位置参数robocopy,示例启动命令:python your_script_name.py robocopy
  • 输入源/目标目录时建议输入完整路径,例如D:\test\source、E:\backup\target,不需要额外加盘符后缀
  • 如果不需要执行完命令保留CMD窗口,可以把cmd /k换成cmd /c

内容的提问来源于stack exchange,提问作者clayton bivens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:36:03