【问题标题】:batch command to move folders containing files批处理命令移动包含文件的文件夹
【发布时间】:2016-01-30 20:27:27
【问题描述】:

我正在尝试编写一个 bat 文件,它可以帮助我在我的 Synology 上对文件夹进行排序。我正在将文件下载到文件夹“下载”,解压缩后它们是文件夹。例如。

我有一个包含文件的文件夹

\downloads\folder1\file1.txt
\downloads\folder2\file2.jpg
\downloads\folder3\file3.txt

我只想批量排序带有 txt 文件的文件夹并将它们移动到其他文件夹 因此,例如带有 txt 文件的文件夹将转到

\folders with txt\folder1\file1.txt
\folders with txt\folder3\file3.txt

这是我的第一个问题,第二个是如何使用pushd命令挂载synology主目录,我知道如何挂载/downloads/但不知道如何挂载主目录。

请帮忙。

【问题讨论】:

    标签: windows batch-file dos synology


    【解决方案1】:

    for /d %%A in (*) do 将在当前目录中搜索文件夹。

    dir /b %%A\*.txt >nul 2>&1 && echo %%A 将打印文件夹名称,如果该文件夹中有任何 .txt 文件。

    使用.txt移动文件夹

    for /d %%A in (*) do (
        dir /b %%A\*.txt >nul 2>&1 && move %%A "folders with txt"
    )
    

    【讨论】:

    • 关于你的第二个问题 - 更具体。 to mount using pushd 是什么意思? pushd 是保存然后更改当前目录的命令。
    • 'mv' 不是内部或外部命令、可运行程序或批处理文件。
    • 我无法使用简单的 cd 命令访问 Synology 上的目录,因此当我使用 pushd 时,网络位置被识别为临时磁盘。 Y:/ 例如,但我需要使用现有目录(例如 pushd /NAS/downloads)来命令它,我不能只为 /NAS/ 执行此操作
    • 如果您需要 cd 到 UNC 路径 - pushd \\server\share 然后在当前目录中执行脚本。如果您需要传递 UNC 路径,请使用 net use x: \\server\\share,然后使用 `x:\`。
    • 在该文件夹中执行 dir /b *.txt || echo fail 并查看消息。