-1

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


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

  • 打开 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 文件夹。

4

2 回答 2

2
::-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
于 2013-09-09T20:25:56.460 回答
1

尝试找到你的路径:

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!
于 2013-09-09T19:57:57.870 回答