Apreciate任何帮助和原谅我,如果我的术语是不正确的。
这是一个脚本(*。sh文件):
1 – 去特定的目录A
2从另一个目录B复制文件到目录A
3-#编出#它还解压缩目录A和其子目录中的文件
4-#comented out#它也删除行1-6和所有* .csv文件的最后一行在方向A
#!/bin/bash # Configure bash so the script will exit if a command fails. set -e #cd to the dir you want to copy to: cd /cygdrive/c/path/I/want/to/copy/to #echo Hello #cp the files i want #include the subdirectories cp -r /cygdrive/c/path/I/want/to/copy/from/* . # This will unzip all .zip files in all subdirectories under this one. # -o is required to overwrite everything that is in there #find -iname '*.zip' -execdir unzip -o {} \; #find ./ -iname '*.csv' -exec sed -i '1,6d;$ d' '{}' ';'
现在,我可以通过转到存储文件的目录并提供以下命令来获得此脚本在cygwin中的工作:
./filename.sh
要么
/cygdrive/c/path/where/the/file/is/filename.sh
要么
bash filename.sh
我也可以通过执行以下操作在CMD / Windows DOS中执行此操作:
C:\cygwin\bin\bash.exe -l
进入bashterminal,然后发出以下命令:
/cygdrive/c/path/where/the/file/is/filename.sh
在任务计划程序(在Windows中)我试图安排以下内容:
C:\cygwin\bin\bash.exe -l /cygdrive/c/path/where/the/file/is/filename.sh
但是这不起作用,即使单独的命令在CMD / Windows DOS中工作,正如我上面所说的
现在我想要做的是能够安排这个脚本(filename.sh),就像我会在Windows中使用任务调度程序.vbs或.bat文件? 任何人都可以提供这个build议吗?
注意我试图写一个Windowsbatch file(.bat)来执行此操作(请参阅下文),但是无法使我的解压缩和sed命令正常工作, 请参阅此处 。 所以我试图写上面的Bash shell脚本。
chdir C:\pointA C:\cygwin\bin\cp.exe /cygdrive/v/pointB/* . ::find -iname *.zip -execdir unzip {} \; ::find ./ -iname '*.csv' -exec sed -i '1,6d;$ d' '{}' ';'
一个解决方案是将.sh文件与运行bash的批处理文件相关联。 这样,无论何时你告诉windows执行一个sh文件,它都会使用正确的启动器 – 无论是通过双击还是计划任务。 这是我的:
@echo off d: chdir d:\cygwin\bin bash --login %*
关联一个文件类型意味着当你试图执行该类型的文件时,windows将使用该文件的路径作为传递给你指定程序的参数。 例如,我有与.ods文件关联的LibreOffice4。 因此,如果我双击.ods文件,或者只是在命令提示符处输入.ods文件的路径,windows将运行open office calc,第一个参数是ods文件。 所以,如果我的桌面上有Untitled.ods。 我双击它。 这与打开命令提示符键入效果相同
D:\Program Files (x86)\LibreOffice 4\program\scalc.exe" "C:\Users\Adam\Desktop\Untitled.ods".
并击中输入。 事实上,如果我这样做,预期会发生:开放式办公计算机启动并加载文件。
你可以看到如果你更改关联到echo.exe(我在D:\ cygwin \ bin中找到),它是如何工作的。 如果我将关联更改为回显,请打开命令提示符并键入
"C:\Users\Adam\Desktop\Untitled.ods"
我只会看到echo.exe回显给我的文件名。
所以我建议你做的是这样的:
为什么不创建一个加载你的cygwin bashscript并安排这个批处理文件的批处理文件(.bat)? 像这样,你不必处理M $处理参数的方式