【问题标题】:convert batch code to python script [closed]将批处理代码转换为python脚本[关闭]
【发布时间】:2015-03-24 04:01:10
【问题描述】:

您好,我想将 windows 批处理文件转换为 linux python 脚本。我可以编写 python 脚本,但我无法理解需要转换为 linux python 脚本的窗口批处理文件的一些代码

:vars

:: Main folder
set BASE_DIR=%~dp0

:: Downloadable data 
set DATA_DIR=%BASE_DIR%\data.downloadable
set              "DBF_DIR=%data_dir%\101\dbf"
set       "CSV_DIR_UPDATE=%data_dir%\101\csv.update"
set "CSV_DIR_FULL_ARCHIVE=%data_dir%\101\csv.full"
set              "SQL_DIR=%data_dir%\101\sql"
set              "RAR_DIR=%data_dir%\101\rarzip"

:: Private data 
set "DATA_DIR_PRIVATE=%BASE_DIR%\data.private"
set     "FORM_DIR_VEB=%data_dir_private%\veb\form"
set      "CSV_DIR_VEB=%data_dir_private%\veb\csv"

:: Output
set "DIR_OUTPUT=%BASE_DIR%\output"


 ::::::::::::::::::::::::::::::::::::::::
 :    add some paths
 PATH %PATH%;%BASE_DIR%
 PATH %PATH%;%BASE_DIR%\task\maintain
 PATH %PATH%;%BASE_DIR%\py

::::::::::::::::::::::::::::::::::::::::

if not exist %DATA_DIR%              md %DATA_DIR%
if not exist %DBF_DIR%               md %DBF_DIR%
if not exist %CSV_DIR_UPDATE%        md %CSV_DIR_UPDATE%
if not exist %CSV_DIR_FULL_ARCHIVE%  md %CSV_DIR_FULL_ARCHIVE%
if not exist %RAR_DIR%               md %RAR_DIR% 
if not exist %SQL_DIR%               md %SQL_DIR% 
if not exist %DIR_OUTPUT%            md %DIR_OUTPUT% 

echo Directories checked or created...

:end

::::::::::::::::::::::::::::::::::::::::

你能解释一下上面的代码到底做了什么吗,至少给我一些逻辑,以便我可以在 python 脚本中实现

【问题讨论】:

    标签: python linux windows batch-file scripting


    【解决方案1】:

    在批处理中,使用SET 命令声明变量。声明变量的值被%符号括起来的变量名使用,即%variable%

    下面的代码将批处理的路径设置为一个名为%BASE_DIR%的变量。

    set BASE_DIR=%~dp0
    

    类似地,下面的代码设置批处理的路径以及它们各自变量的目录

    :: Downloadable data 
    set DATA_DIR=%BASE_DIR%\data.downloadable
    set              "DBF_DIR=%data_dir%\101\dbf"
    set       "CSV_DIR_UPDATE=%data_dir%\101\csv.update"
    set "CSV_DIR_FULL_ARCHIVE=%data_dir%\101\csv.full"
    set              "SQL_DIR=%data_dir%\101\sql"
    set              "RAR_DIR=%data_dir%\101\rarzip"
    
    :: Private data 
    set "DATA_DIR_PRIVATE=%BASE_DIR%\data.private"
    set     "FORM_DIR_VEB=%data_dir_private%\veb\form"
    set      "CSV_DIR_VEB=%data_dir_private%\veb\csv"
    
    :: Output
    set "DIR_OUTPUT=%BASE_DIR%\output"
    

    以下代码将存储在%BASE_DIR%%BASE_DIR%\task\maintain%BASE_DIR%\py 路径中的值附加到 PATH 环境变量中。

    PATH %PATH%;%BASE_DIR%
    PATH %PATH%;%BASE_DIR%\task\maintain
    PATH %PATH%;%BASE_DIR%\py
    

    以下代码创建存储在这些变量中的文件夹%DATA_DIR%%DBF_DIR%%CSV_DIR_UPDATE%%CSV_DIR_FULL_ARCHIVE%%CSV_DIR_FULL_ARCHIVE%

    if not exist %DATA_DIR%              md %DATA_DIR%
    if not exist %DBF_DIR%               md %DBF_DIR%
    if not exist %CSV_DIR_UPDATE%        md %CSV_DIR_UPDATE%
    if not exist %CSV_DIR_FULL_ARCHIVE%  md %CSV_DIR_FULL_ARCHIVE%
    if not exist %RAR_DIR%               md %RAR_DIR% 
    if not exist %SQL_DIR%               md %SQL_DIR% 
    if not exist %DIR_OUTPUT%            md %DIR_OUTPUT% 
    

    【讨论】:

      【解决方案2】:

      脚本将一些路径添加到%PATH% 环境变量。然后它检查变量指定的目录路径是否存在,如果不存在,则创建它们。

      BASE_DIR 目录是脚本当前所在的目录。

      我觉得我的答案应该比这更长,但这就是脚本的全部内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-01
        • 1970-01-01
        • 2013-01-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多