我的Windows共享上有一个.bat脚本,它安装在我的UNIX机器上。 Bat脚本设置为在两个窗口共享之间进行文件传输,但是如果可能的话,我想从unix机器触发此脚本。我读到你可以用wine或dosbox来做,但我没有在我的unix上安装它。是否可以使用一些能够正确触发我的.bat脚本的附加.sh脚本来解决此问题?
提前谢谢你。 最好的祝福。
答案 0 :(得分:0)
由于以下几个原因,您无法在Unix计算机上运行.bat
script:
Unix与Windows没有相同的命令(在命令行上)。 POSIX标准定义了一组命令,如果你使用它们,你将可以在各种POSIX系统上移植(但不能在Windows上);例如,要列出directory,您将在MSDOS和Windows上使用DIR
,在Unix和POSIX上使用ls
;复制文件在MSDOS和Windows上为COPY
,在Unix和POSIX上为cp
;等....
Unix与Windows不同command interpreter。 POSIX标准和Unix传统提供Unix shell,POSIX有standardized /bin/sh
(a.k.a. POSIX shell)。 Windows有CMD(继承自MSDOS)和PowerShell。
解释命令的方式是不同的(在Windows上也看到PowerShell,我不知道)。在Unix上,正在扩展命令的{em> shell (不是被调用的程序)和globbing。有关详情,请参阅this answer。 current working directory的概念不同。
Windows和Unix或POSIX上的操作系统概念(略有或显着)不同。例如,files,directories,processes,libraries是不同的(例如,文件可以由进程编写,并在Unix上由另一个文件删除,它可以在Linux上通过hard links),....等有几个名称....您可以阅读Operating Systems: Three Easy Pieces以获取概述。
Unix philosophy并非(始终)适用于Windows。
因此,您需要学习Unix (或POSIX)并从头开始编写您自己的shell script 。 不要 尝试将bat
script“翻译”为Unix shell script ,但要完全重新设计(开始)来自您希望它解决的问题。
另请阅读SCP和FTP。也许使用像version control这样的分布式git系统可能与您相关(例如,共享脚本,源代码等......)。
如果您需要在远程 Windows计算机上(例如从Unix计算机)远程运行远程某些Windows .bat
脚本,则应使用一些远程命令运行服务(即在Windows上查找并使用一些等效的SSH服务,并在Unix上使用相应的客户端)。请参阅this。
因此,如果您需要在Windows服务器上远程运行来自Unix机器的某些东西(例如某些程序,某些脚本,某些命令),您应该提出一个不同的问题(或者至少可以改进当前的一个问题)
了解client-server model和application layer以使用正确的术语。您应该命名您想要涉及的协议,服务器,客户端和服务。没有使用它们,没有什么是神奇的“触发”。
PS。我从1987年开始使用Unix,自1993年开始使用Linux。我从未使用过Windows。