windows - 将 Unix Shell 脚本转换为 Windows 批处理文件

标签 windows shell batch-file

我有一个在 Unix 中工作的 shell 脚本 (.sh),但我想将它转换成一个 Windows 批处理文件 (.bat):

cat >flog.ctl <<_EOF
LOAD DATA
INFILE '$1.log' "str ';'"
APPEND INTO TABLE flog
fields terminated by '=' TRAILING NULLCOLS
(
filename constant '$1'
,num  char
,data char
)
_EOF

sqlldr <username>/<password>@<instance> control=flog.ctl data=$1.log

我对批处理文件不太了解,但如果答案是一些提示而不是完整的解决方案,那么我确定我会得过且过。这是为了帮助回答另一个问题 here .

最佳答案

Windows 批处理文件不支持以这种方式内联数据。你必须

ECHO firstLine > flog.ctl
ECHO additionalLine >> flog.ctl

Windows 批处理文件使用 % 符号表示 ECHO 语句中的变量,即 %1%。

所以你得到的文件应该是这样的:

@ECHO OFF
ECHO LOAD DATA > flog.ctl
ECHO INFILE '%1%.log' "str ';'" >> flog.ctl
ECHO APPEND INTO TABLE flog >> flog.ctl
ECHO fields terminated by '=' TRAILING NULLCOLS >> flog.ctl
ECHO ( >> flog.ctl
ECHO filename constant '%1%' >> flog.ctl
ECHO ,num  char >> flog.ctl
ECHO ,data char >> flog.ctl
ECHO ) >> flog.ctl

sqlldr <username>/<password>@<instance> control=flog.ctl data=%1%.log 

关于windows - 将 Unix Shell 脚本转换为 Windows 批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9121876/

相关文章:

c# - 如何在 Windows 10 通用应用程序中使用 isTypePresent 检测相机是否可用

shell - 该命令有什么问题...您能找到此命令中的错误吗?

bash - 如何按特定列对 csv 进行排序

java - 如何指定与底层 Windows 代码页一致的 Java file.encoding 值?

java - 为什么java中的isActive()函数在windows中工作而在ubuntu中不起作用

windows - 使用 NtQueryObject 获取注册表路径

windows - 有没有办法设置窗口让控制台窗口保持打开状态?

shell - 在 shell 脚本中扩展变量

batch-file - 使用批处理脚本将字母更改为对应的数字

batch-file - 链接批处理脚本时出现意外的双&符号/管道行为