【问题标题】:How to I amend Unix shell script to Windows batch file?如何将 Unix shell 脚本修改为 Windows 批处理文件?
【发布时间】:2017-08-08 13:39:57
【问题描述】:

我需要将以下 Unix 脚本转换为在 Windows 上运行。我假设cd 命令将更改为调用dir,echo 命令更改为调用print。

脚本检查给定文件的目录,如果文件不存在,则脚本循环/休眠,然后再次检查。

我主要在纠结如何最好地转换变量和循环命令,任何提示/提示将不胜感激?

cd $DIRECTORY_NAME

echo "You are currently in $(pwd) directory"

numfiles=0

while [ $numfiles -lt "1" ]

do

    export filename=`ls SWIX_BAU_success`
    export numfiles=$(echo $filename | wc -w)
    echo "$numfiles file found"

if [ $numfiles -ge "1" ]

then

    echo "$filename file found"
    exit 0

else

    echo "Incorrect number of files found, 1 file expected"
    numfiles=0
    sleep 300

fi

done

【问题讨论】:

标签: windows shell batch-file unix


【解决方案1】:

当您撤销问题时,我正要在 SO 上发布此答案。
假设SWIX_BAU_success 是一个只有一个文件的(子)目录。

@Echo off

cd /D "%DIRECTORY_NAME%"
echo You are currently in directory: %CD%
Set numfiles=0

For /f "tokens=1,* delims=:" %%A in (
    'Dir /B "SWIX_BAU_success" ^| findstr /n ^ '
) DO Set numfiles=%%a&Set filename=%%B

If %numfiles% equ 1 (
    echo %filename% found
    exit /B 0
) else (
    echo "Incorrect number of files found, 1 file expected"
    set numfiles=0
    Timeout /T 300
)

【讨论】:

  • 感谢您的回复,这看起来很棒,我很快就会对其进行测试。关于您的假设,SWIX_BAU_success 是文件名而不是目录,是的,只有一个文件。包含该文件的目录是您拥有 cd /D "%DIRECTORY_NAME%" 的位置
  • 如果它是一个独特的文件名,它只能存在一次,这会简化为一个简单的if exist "SWIX_BAU_success" (..) Else (...)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
相关资源
最近更新 更多