【问题标题】:Batch file to open and sort a folder that has an unknown path批处理文件以打开和排序具有未知路径的文件夹
【发布时间】:2013-09-09 17:53:04
【问题描述】:

如果你认为我不值得任何帮助,因为我自己几乎没有代码, 只需帮助我解决“查找文件夹并打开它”部分。 我有很好的代码,只需要一个愚蠢的环境变量作为我已知路径之前的路径。请。


我正在寻找执行以下操作的批处理代码:

  • 打开 cmd 窗口并在其中以大字体显示以下消息:

    按 Enter 打开 Skyrim Data 文件夹。

  • 如果按下 Enter,

    搜索我只知道文件夹路径最后一位的文件夹, 即\common\Skyrim\Data

我希望它找到的文件夹是这个 Data 文件夹。 文件夹路径可以在任何驱动器上,并且在 \common\Skyrim\Data 之前可能有随机数量的具有不同名称(可能还有空格)的文件夹,但只有一个 Data 文件夹在这条确切路径的尽头。

  • 如果找不到文件夹,

    不要自动关闭 cmd 窗口。

    显示找不到文件夹。按一个按钮退出。

    按下按钮时关闭 cmd 窗口。

  • 如果找到文件夹,

    停止搜索。

    详细视图中打开文件夹,

    对其进行排序,使其在其他所有文件之上显示最新文件。

    (详细视图、修改日期、升序)

    自动关闭cmd窗口。

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

这是我所拥有的:

@ECHO 关闭

%SystemRoot%\explorer.exe "\common\Skyrim\Data"

无论 Windows 版本如何,我都希望 .bat 能够正常工作, 所以它应该能够在 x64 和 x82 机器、Windows 8、7、Vista、XP 上工作。 我想要它,这样每个人(在 Windows 上)都可以使用它来查找并打开他们的 Skyrim Data 文件夹。

【问题讨论】:

  • 尝试谷歌搜索“如何编写批处理文件”。该网站旨在帮助那些陷入困境或纠正错误的人,但无论哪种情况,该人都尝试过。这只是请求某人为您编写代码。
  • 是的...我被卡住了。我确实在谷歌上搜索了很长时间,甚至找不到如何找到和打开文件夹。我找到的是这个网站。我真的看了。我什至检查了环境变量,但没有一个起作用。 ;%PATH% 可能有效,但没有。也许我放错了。如果您认为我没有尝试过,请忽略我希望拥有的大部分内容,只帮助我查找和打开文件夹。我有很好的代码。我只需要变量来处理已知路径之前的所有内容。我真的很感激。
  • 你对我的问题投了反对票吗? :( 我不能编辑超过 2 倍的评论吗?我不能编辑我的其他评论,所以我创建了这个新评论,只是为了让你知道不需要投票否决这个问题,因为我确实在我的研究中付出了一些努力.
  • 我的问题很有用而且很清楚。它没有显示研究成果,但它有用且清晰。所以一个是坏的,另一个是好的。这使它保持中立。
  • 您介意脚本是否需要管理员权限(您可以创建一个自动设置它们的快捷方式)?

标签: search batch-file find directory


【解决方案1】:
::-Open the Skyrim Data folder-
::This will run on 64/32 bit systems
::and on Windows XP/Vista/7/8
::from any directory without knowing drive or path
::And will be faster than brute force search.
::Batch code by npocmaka, tiny edits by Dani.
::http://stackoverflow.com/questions/18704093/batch-file-to-open-and-sort-a-folder-that-has-an-unknown-path
::No sorting feature yet.
::No automatic file archiving yet.

@echo off
mode con cols=75 lines=50
echo(
echo(
echo(
echo                                 A          j
echo                                #M,         N#
echo                               QM*~         *MM
echo                              pM9            lM^&
echo                             gN#    p         dM&
echo                            jMMV    M^&        l@N^&
echo                           jMM8    yMMMM#-     M#M^&
echo                          _MMMP    MMMMMMm,    )NMMg
echo                         ,MMMM    4M7^   "7&    MMMMg
echo                        _MMMM8    "~      jM    l#MMM,
echo                       _MMMMM^&          _pMF    jMNMMMc
echo                       #MMMMMMMc    _gNM5~'    #MMMMMMM,
echo                      BMMMMM   `   NMMM           MMMMM#
echo                     #MMMMM8       ~QM            ]MMMMM^&
echo                    pMMMMMM    _   , MMg      _    #MB#MM^&
echo                   4MMMMMM#    MNgp#, MMM _ggMF    #MMMMMM^&
echo                   "MMMMMMMMmmgNMMMMM^&MMMMMMMMMggmMMMMNMMMf
echo                    "#MMMMMg2**#ZMMMMMN#MMMMM2@**~QMMMMMMF
echo                     =MMNRMMMMMMMMMMMM@MMMMMMMMMMMMMMMMMP
echo                      7MM^&B@MBMMMMMMM!^NMNMMMMMMMMMMNMM#
echo                       #MMWMMMM4MN2MMMpJMMMMBM7~MNMNMM@
echo                        QMMMZ"   ~  *MQ7MM' M^  "MMMMN
echo                         PMQf]       ^@~MM      ' #MM'
echo                          #Mp1        ] 4M       gMM'
echo                          `MMMg        , M     _#BM'
echo                           "MMMMp,     [r"   _gMM@(
echo                            +MMMMI    j@    ]#MMM9
echo                             \MMMI   jF,`   ]BMMF
echo                              \#MI  jZv      #M'
echo                               YM^|   #f
echo                                G^|   ,^&
echo                                    _#,
echo                                   yM/
echo                                   M^&
echo                                   `Mg,g*^^
echo                                    ^|QM# !
echo                                     "QT/
echo                                      "7

echo(
echo(
echo(
echo                   Searching for the Skyrim Data folder...
echo(
echo(



color
::for 64bit systems
REGEDIT.EXE  /E "%temp%\skyrim.REG" "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Bethesda Softworks\Skyrim"
::for 32bit systems
if errorlevel 1 REGEDIT.EXE  /E "%temp%\skyrim.REG" "HKEY_LOCAL_MACHINE\SOFTWARE\Bethesda Softworks\Skyrim"
color
if not exist "%temp%\skyrim.REG" (
    echo  DONE! - Folder not found.
    pause >nul
    exit /b 1
)

for /f "tokens=2 delims==" %%S in ('type "%temp%\skyrim.REG" ^|find "Installed Path"') do (
    set "skyrim_folder=%%~S"
)
set "skyrim_folder=%skyrim_folder:\\=\%"
del "%temp%\skyrim.REG" /S /Q >nul 2>&1
echo                                Opening:
echo        ~~ %skyrim_folder%Data ~~
start explorer "%skyrim_folder%Data"
exit /b 0

goto :eof
::Do not use the following - Will take ages.

rem  ::
rem  :: find available disk drives
rem  ::

for /f "tokens=1 delims= " %%D in ('fltmc volumes | findstr /C:"NTFS" /C:"FAT"') do (
    set "disk_drives=%%D;"
)
rem  ::
rem  :: search
rem  ::
for %%P (%disk_drives%) do for /f %%S in ('dir /b /s a:d %%P\*data ^|find "\common\Skyrim\Data"') do (
    start explorer "%%S" && exit /b 0
)
echo skyrim not found
pause

【讨论】:

  • 哇,这是一个很棒的代码!你甚至添加了天际标志!它也很好用!谢谢!!现在,……要求排序功能会不会太过分了?我们可以忽略“详细视图”,但我们可以让它对修改日期、升序进行排序吗? (最重要的最新文件)我也不确定“在此处复制 mod 文件”是什么意思。编辑:由于缺少声誉,我无法投票赞成您的代码:(
  • /刚刚更新了代码并添加了一些改进/。不幸的是,我无法通过批处理控制 explorer.exe。我可以使用控制台对文件进行排序并打印它们,但操作窗口需要更复杂的工具(例如 powershell)
  • 可能你想复制一些 espesm 文件到那里。这可以通过脚本完成。甚至从 zip 中解压缩它们
  • Awww... 仍然没有足够的声誉来投票 :( 关于 .esp 和 .esm:相反。我想把它们从文件夹中取出。事情是,通过安装 Skyrim Steam Workshop mod,它会自动将文件放在那里,但我不希望它们在那里(还)。我想用 mod manager 安装它们。我必须将它们存档并将它们导入 mod manager . 我们不知道 Workshop 安装了哪些文件。(可能是 .bsa + .esp 或只是 .esp)因此,我希望对文件夹进行排序,以便用户可以看到哪些文件是新文件并将它们从文件夹。
  • 用户必须: 打开他们的 Data 文件夹,对其进行排序,以便在其他所有内容之上显示最新文件,找出属于 mod 的最新文件,将它们放在一个名为的新文件夹中数据,将新的数据文件夹打包到 .zip 存档中,将该存档导入他们的 mod 管理器。我不认为所有这些都可以用一个简单的 .bat 来完成,可以吗?
【解决方案2】:

尝试找到你的路径:

set "skypath="
for /f %%a in ('dir /ad /b /s \data ^| findstr /i "\\common\\Skyrim\\Data$"') do set "skypath=%%~fa"
if defined skypath (echo %skypath%) else echo not found!

【讨论】:

  • 您的代码会搜索我的文件夹吗?因为 cmd 窗口存在了一段时间,然后消失了。我添加了“暂停”以使其保持打开状态,但它不显示我的文件夹路径。
  • @npocmaka 它从根目录搜索。请不要散布恶作剧。
  • 我的错误 0_o .但是,它不会在所有驱动器中搜索。要查找所有硬盘驱动器并过滤掉闪存卡和 cd-rom,只需要几行代码。
  • @npocmaka 如果我尝试fltmc volumes,我会在 Win8 中得到Volume listing failed with error: 0x80070005
  • 它需要管理员权限。但我的检查不完整。我还需要找到哪些设备支持Disk Quotas>fsutil fsinfo volumeinfo z: 以过滤掉闪存卡。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2014-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多