我正在尝试将 Windows 批处理文件转换为 bash shell 脚本。但我无法理解如何转换以下命令。我已经使用 wine 在 Linux 中运行 .exe 文件。还有其他方法可以在 Linux 中运行 .exe 文件吗?
我想在shell脚本中转换的批处理代码如下:
echo Deleting any task..
call schtasks.exe /delete /TN "Task_name" /F
echo Creating new task..
call schtasks.exe /create /RU %computerName% \%UserName% /RP %Password% /TN
"Task_name" /XML "DATA/Task_name.xml"
答案1
我相信OP想要做的是从shell脚本在Linux上创建计划任务。
确切的任务是什么以及为什么从他们发布的内容中根本不清楚,但通常这可以通过在 shell 脚本中自动化“crontab”来实现。
执行此操作需要一些相对高级的 shell 脚本技术,因此可能不建议 shell 脚本新手使用。
如何做到这一点的一个例子是:
#!/bin/bash
# Create empty temporary file with safe name
TEMPFILE=$(mktemp)
# Put current crontab for user into the temporary file
crontab -l > $TEMPFILE
# Append new command to end of the created file using a shell 'here document'
cat << EOF >> $TEMPFILE
0 0 * * * /bin/df > /tmp/df-date-$(date +%d%b%Y)
EOF
# Load the new extended file in as the crontab for the user
crontab $TEMPFILE
这只是一个示例,不应该直接复制 - 用它来研究正在演示的每个概念并理解它们。
如果用户还没有 crontab 文件,则可能会出现问题。根据man 5 crontab
我系统上的手册页,另一个问题是某些 Linux 版本的crontab -l
添加标题行,这意味着crontab -l | crontab -
(即尝试导出和重新导入相同的数据)将不断添加额外的标题行。
还存在竞争条件 - 用户的 crontab 可能会被crontab -l
行与末尾行之间的另一个进程编辑以重新导入 crontab。但我已经看到与此过程类似的东西在实际环境中成功使用。
有关该行的含义,请参阅和 的0 0 * * * /bin/df > /tmp/df-date-$(date +%d%b%Y)
文档。我的示例的效果是每天创建一个文件,其中包含系统命令的输出。cron
crontab
/tmp
df