注:この質問は少し長く、バッチの経験がある人のみを対象としています。この質問に少し時間を割いて、あれこれを分析していただければ、喜んで応じます。
こんにちは、また私です。これは、私の最後の質問「Findstr to a variable w/ File count and subdirectories」に基づいています。
プログラムは「ファイルサーチャー」です。DIR コマンドは TEXT ファイルに出力し、FINDSTR コマンドは検索語に一致する特定の文字列を見つけます。もしそうなら、それはファイルを見つけるようなものです。今のところ、すべてが完璧な動作状態にあります。コードはまだ完成していませんが、ディレクトリ "map-out" (テキスト ファイルへのディレクトリ) の表示が機能していません。
これがコードです。(コードの下に追加のテキスト)
@echo off
if NOT exist temporary goto make
:cont
set odir=%dir%
cd temporary\cache
if NOT exist partitionmapout.rsm goto partitionmapoutreq
goto cont2
:partitionmapoutreq
echo Note:
echo Would you like to Map out your whole C:\ Partition? This makes the program map out every single file in your C:\ Drive.
echo This can take from a few seconds to a few minutes (Depends on how much stuff you store in your drive)
set /p parch="Y/N: "
if %parch% == Y goto partitionmapout
title SONOROUS FILE SEARCHER (Copyright 2013 by Sonorous)
:cont2
cd temporary
set odir=%dir%
set /p cdir="DIRECTORY: "
set domap=%cdir%
title SONOROUS FILE SEARCHER: Mapping out...
echo PLEASE WAIT, MAPPING OUT DIRECTORY.
dir %domap% /a-d /b /s > "tempres.rsm"
echo Directory Mapout done
echo -----------------------------
echo DIRECTORY MAPOUT
set dirmapout=<tempres.rsm
echo %dirmapout%
echo -----------------------------
title SONOROUS FILE SEARCHER: Mapout done.
set /p "searchinput=Search Term: "
title SONOROUS FILE SEARCHER (Copyright 2013 by Sonorous)
for /f "delims=" %%a in ('findstr /i /L /c:"%searchinput%" "tempres.rsm" ') do set "found=%%a"
set proin=%found%
echo "%found%"
cd temporary
del "tempres.rsm"
echo Would you like to open the program or just leave it alone? (Y/N)
echo WE CANNOT OPEN PROGRAMS W/ NO SPACES ON THEIR NAME.
set /p oc=""
if %oc% == Y goto openpro
pause
cls
echo THANK YOU FOR USING OUR PROGRAM.
echo CLOSING IN 5 SECONDS
timeout /t 1 >nul
cls
echo THANK YOU FOR USING OUR PROGRAM.
echo CLOSING IN 4 SECONDS
timeout /t 1 >nul
cls
echo THANK YOU FOR USING OUR PROGRAM.
echo CLOSING IN 3 SECONDS
timeout /t 1 >nul
cls
echo THANK YOU FOR USING OUR PROGRAM.
echo CLOSING IN 2 SECONDS
timeout /t 1 >nul
cls
echo THANK YOU FOR USING OUR PROGRAM.
echo CLOSING IN 1 SECONDS
timeout /t 1 >nul
cls
exit
:openpro
echo NOTE: WE DO NOT KNOW THE PROGRAM'S FILE DIRECTORY, SO WE WILL START THE PROGRAM
echo THRU THE FILE DIRECTORY YOU INPUTTED.
pause
start %proin%
exit
:make
echo Temporary Folder (Where the program stores temporary files)
echo Does not exist. Creating...
md temporary
cd temporary
md cache
cd %odir%
echo Complete.
goto cont
:partitionmapout
title Partition Map out...
echo Mapping out...
echo DO NOT CLOSE THE PROGRAM WHILE IT IS MAPPING OUT OR ELSE IT WILL FATALLY CRASH NEXT TIME YOU OPEN IT
echo The partition map-out is not done. Wait for a few minutes.
dir C:\ /a-d /b /s > "tempres.rsm"
echo The partition map-out is complete.
goto cont
動作しないコードの特定の領域はこれです。
cd temporary
set odir=%dir%
set /p cdir="DIRECTORY: "
set domap=%cdir%
title SONOROUS FILE SEARCHER: Mapping out...
echo PLEASE WAIT, MAPPING OUT DIRECTORY.
dir %domap% /a-d /b /s > "tempres.rsm"
echo Directory Mapout done
echo -----------------------------
echo DIRECTORY MAPOUT
set dirmapout=<tempres.rsm
echo %dirmapout%
echo -----------------------------
title SONOROUS FILE SEARCHER: Mapout done.
「dir」コマンドは、指定されたディレクトリのマッピングを完了します。別のコマンドは、dir コマンドの出力を変数にコピーします。その変数は「DIRECTORY MAPOUT」部分に表示するように設定されています。しかし、それは言います
ECHO IS OFF
「tempres.rsm」(ディレクトリマップアウトが保存されているファイル)は「temporary」ディレクトリにあります(動作しないコードEGの最初の行に見られるように。「cd temporary」)他の「CD」コマンドはありません。そのため、同じディレクトリにあることが保証されます。
ただし、変数が「tempres.rsm」からデータを取得するように設定されている場合、データは代わりに
ECHO IS OFF
十分な詳細をすべて提供できたことを願っています。 そうでない場合は、コメントを残してください。整理します。