将批处理代码转换为python脚本

时间:2015-03-24 04:01:10

标签: python linux windows batch-file scripting

您好我想将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脚本实现

2 个答案:

答案 0 :(得分: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% 

答案 1 :(得分:0)

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

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

我觉得我的回答应该比这长,但这完全是脚本所做的。