繁体   English   中英

如何避免在此批处理文件中重复启动cmd.exe来运行AWS CLI命令?

[英]How do I avoid repeatedly starting cmd.exe in this batch file to run AWS CLI commands?

通过遵循各种示例,我设法将一个工作批处理文件拼凑在一起,该文件使用AWS CLI从AWS S3存储桶中提取文件列表,并将URL附加到它们的开头。

我知道您可以在“ S3浏览器”之类的程序中执行类似的操作,但是我需要一个“一键式解决方案”。 结果如下; 当我运行它时,它成功地从4个子文件夹中提取列表并将其保存到4个不同的文本文件中。

它确实可以满足我的要求,但是我认为这是一项非常笨拙的工作。 例如,我在每个循环上启动然后关闭cmd.exe以发送命令。

我试图把它放在循环之外; 似乎应该很容易做到,但作为批处理文件的原始入门者,我无法使其正常工作。

有任何想法吗?

这是代码:

@echo off 

REM ----------- SET VARIABLES -------------------
REM Set AWS Base URL
REM ----------------
set BaseURL=https://s3-eu-west-1.amazonaws.com

REM SET AWS Bucket Name
REM -------------------
set Bucket=XXXXXX

REM SET Bucket Sub-Folder
REM ---------------------
set sub-folder-1=XXXXXX

REM SET Bucket Sub-Folder
REM ---------------------
set sub-folder-2=XXXXXX

REM SET Bucket Sub-Folders
REM ----------------------
set sub-folder-3=MP4 MP3 PDF Thumbnails

REM Set AWS file download location
set DownloadAWSFileTo=C:\Desktop

REM ------------------------------------------------

REM Loop through all sub-folders
    For %%a in (%sub-folder-3%) do (
        REM Start AWS CLI, download/save directory list to desktop, and close CMD window
        start cmd.exe /k "aws s3 ls s3://%Bucket%/%sub-folder-1%/%sub-folder-2%/%%a/ > %DownloadAWSFileTo%\filelist.txt" ^& exit

    REM Pause for 3 seconds to make sure CMD is finished
        timeout /t 3

    REM Remove everything from AWS directory list EXCEPT file names
        for /f "tokens=4 delims= " %%i in (filelist.txt) DO ( echo %%i >> CLEANfilelist.txt)

    REM Append URL structure to beginning of each line and make new list
        for /F "delims=" %%j in (CLEANfilelist.txt) do echo.%BaseURL%/%Bucket%/%sub-folder-1%/%sub-folder-2%/%%a/%%j >> %%a-URLs-%sub-folder-2%-AWS.txt

    REM Delete unwanted text files
        del filelist.txt
        del CLEANfilelist.txt
   )

只需删除cmd.exe就可以了...

REM Loop through all sub-folders
For %%a in (%sub-folder-3%) do (
    REM AWS CLI command to get directory file list and save to desktop
        aws s3 ls s3://%Bucket%/%sub-folder-1%/%sub-folder-2%/%%a/ > %DownloadAWSFileTo%\filelist.txt

    REM Remove everything from AWS directory list EXCEPT file names
        for /f "tokens=4 delims= " %%i in (filelist.txt) do (echo %%i >> CLEANfilelist.txt)

    REM Append URL structure to beginning of each line and make new list
        for /F "delims=" %%j in (CLEANfilelist.txt) do echo.%BaseURL%/%Bucket%/%sub-folder-1%/%sub-folder-2%/%%a/%%j >> %%a-URLs-%sub-folder-2%-AWS.txt

    REM Delete unwanted text files
        del filelist.txt
        del CLEANfilelist.txt
)

REM Pause to finish final file cleanup
timeout /t 3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM