我使用.bat文件运行.tcl脚本,如下面的简化示例所示:
script.tcl
set a "this is the script"
puts $a
script.bat
echo off
set tclpath="C:\tclsh.exe"
set filepath="C:\script.tcl"
%tclpath% %filepath%
我想知道我是否可以在.bat文件中包含.tcl脚本的命令,因此我只有一个.bat文件运行tclsh.exe并将命令传递给tcl shell,而不是拥有两个文件。 / p>
这可能吗?我该怎么办?
答案 0 :(得分:1)
我想知道我是否可以在.bat文件中包含.tcl脚本的命令,所以我没有两个文件,只有一个.bat文件 运行tclsh.exe并将命令传递给tcl shell。
您可以在批处理脚本中使用CALL子例程,该命令会将命令附加到您使用buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
变量指定的动态创建的脚本文件中。
通过这种方式,您可以在批处理脚本中拥有所有内容,除了确保创建它的set filepath
例程具有正确的语法等之外,您无需担心tcl脚本文件。
您实际上是使用批处理ECHO
命令构建tcl脚本逻辑,并且每次运行都会创建它。
使用带有特殊字符的警告,因为如果批量解释那些或其他人,则可能需要对{t}脚本的escape某个字符使用克拉:tclshScript
符号注意一个问题。
^
答案 1 :(得分:1)
对于很多事情,Tcler的Wiki上有一些页面可以查找有趣的内容。特别是,this old page有一些非常有用的技巧。在您阅读时,您将看到尝试过的技术历史。它们取决于Tcl命令通常可以以::
为前缀(在批处理文件语言中将它们标记为奇怪的标签)这一事实,您可以使用if 0
在Tcl中注释掉代码块(使用Tcl)不解析内容,除了确保它是支撑平衡的,通常是哪个代码)。
最好的技巧是不仅使代码多语言,而且也使其易于阅读。保持可读性是不要发疯的关键。
::if 0 {
@rem This code in here is pure batch script
echo off
set tclpath="C:\tclsh.exe"
%tclpath% "%~f0" %*
@rem Put this at the end; it means terminate since the “eof” label is end-of-file
@goto eof
}
# This code is the pure Tcl code
set a "this is the script"
puts $a
要注意的其他比特:
"%~f0"
- 这会将完整路径转换为“第零个参数”,这是您正在运行的脚本的名称。%*
- 这是剩下的所有论点。传递它们是个好主意,您可以使用全局argv
变量中的列表从Tcl访问它们。