【问题标题】:How to run .sh file on Windows10 startup如何在 Windows 10 启动时运行 .sh 文件
【发布时间】:2019-12-19 15:57:40
【问题描述】:

如何在启动 Windows 10 时运行 Bash 脚本?

我只能找到 ubuntu 的灵魂。

谢谢。

#!/bin/bash
# Desktop PATH
Desktop=/c/Users/118883/Desktop
# folder with the script
executeFolder=Clean-up-folder-structure 


# mainfolder
sortingFolder=sorting

# inner folders
docFolder=1.word_docs
excelFolder=2.excel_docs
imageFolder=3.images

cd $Desktop

# moves all folders from desktop to a sorting folder
function moveMyFiles(){
find *  -mindepth 0 -maxdepth 0 -not -name $sortingFolder -not -name 
$executeFolder -exec mv -v -t $sortingFolder {} +
}

# Sort al the .docx files
function sortDocs(){
cd $sortingFolder
if [ -d $docFolder ]
then 
    find *.docx -mindepth 0 -maxdepth 0 -exec mv -v -t $docFolder {} +
else
    mkdir $docFolder
    find *.docx -mindepth 0 -maxdepth 0 -exec mv -v -t $docFolder {} +
fi
}

function sortExcel(){
cd $sortingFolder
if [ -d $excelFolder ]
then 
    find *.xlsx -mindepth 0 -maxdepth 0 -exec mv -v -t $excelFolder {} +
else
    mkdir $excelFolder
    find *.xlsx -mindepth 0 -maxdepth 0 -exec mv -v -t $excelFolder {} +
fi
}

function sortImages(){
cd $sortingFolder
if [ -d $imageFolder ]
then 
    find *.PNG -mindepth 0 -maxdepth 0 -exec mv -v -t $imageFolder {} +
    find *.JPEG -mindepth 0 -maxdepth 0 -exec mv -v -t $imageFolder {} +
    find *.jpeg -mindepth 0 -maxdepth 0 -exec mv -v -t $imageFolder {} +
    find *.jpg -mindepth 0 -maxdepth 0 -exec mv -v -t $imageFolder {} +
    find *.GIF -mindepth 0 -maxdepth 0 -exec mv -v -t $imageFolder {} +
else
    mkdir $imageFolder
    find *.PNG -mindepth 0 -maxdepth 0 -exec mv -v -t $imageFolder {} +
    find *.JPEG -mindepth 0 -maxdepth 0 -exec mv -v -t $imageFolder {} +
    find *.jpeg -mindepth 0 -maxdepth 0 -exec mv -v -t $imageFolder {} +
    find *.jpg -mindepth 0 -maxdepth 0 -exec mv -v -t $imageFolder {} +
    find *.GIF -mindepth 0 -maxdepth 0 -exec mv -v -t $imageFolder {} +
fi
} 

#main execute 
if [ -d $sortingFolder ]
then 

cd $Desktop
moveMyFiles
sortDocs
sortExcel
sortImages

else

# zo niet maak een folder
cd $Desktop
mkdir $sortingFolder
moveMyFiles
sortDocs
sortExcel
sortImages
fi

在 Powershell 中运行时出现错误。 语法错误和解析错误。 喜欢:

在 line:1 char:3 + 如果 [ -d $sortingFolder ] + ~ if 语句中的 'if' 后面缺少 '('。 在行:1 字符:5 + 如果 [ -d $sortingFolder ] + ~ '[' 后缺少类型名称。 + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : MissingOpenParenthesisInIfStatement

【问题讨论】:

  • Bash 脚本是 Unix。为什么要在 Windows 系统上运行一个?
  • Windows 10 有一个启用 bash 的选项。

标签: windows bash shell


【解决方案1】:

我建议与 gazzo 相同,但不是使用 powershell,而是使用虚拟 shell,例如 git bash。当然如果可能的话。

由于我们的工作环境是如何设置的,我通过 git bash 使用 bash 脚本来下载 git 存储库、动态设置项目等。您可以设置 windows 来运行 git bash exe 并传入 bash 脚本的路径来运行它.

【讨论】:

    【解决方案2】:

    可能有点复杂,但它有效:您可以使用 sh 脚本在 powershell 中运行

    sh yourShScript

    您可以将此命令放入 powershell 脚本文件(例如 yourScript.ps1)中,然后将此 powershell 脚本放入 cmd 脚本中,然后您可以在启动时运行该脚本。在 cmd 文件中写入:

    PowerShell pathToYourScript\yourscript.ps1

    【讨论】:

    • 好主意,但我认为 powershell 对使用 bash 有限制。我收到错误(我编辑了我的帖子以获取详细信息)。
    • 我想知道是否有办法直接实现它。因为windows支持使用linux子系统。
    【解决方案3】:

    在 powershell 中使用:

    wsl sh

    这会启动 wsl 子系统,而不仅仅是 powershell

    【讨论】:

    • 也适用于 cmd shell(你可能用于 curl 吗?)
    猜你喜欢
    • 2021-07-17
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2017-01-09
    相关资源
    最近更新 更多