Skip to content

Instantly share code, notes, and snippets.

@neetsdkasu
Last active August 29, 2015 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save neetsdkasu/8877998 to your computer and use it in GitHub Desktop.
Save neetsdkasu/8877998 to your computer and use it in GitHub Desktop.
srcディレクトリを探すバッチファイル (コマンドプロンプトを使ったJava開発に使う、Windows7)
@echo off
rem Javaなどでsrc以下の深いパッケージ名ディレクトリからsrcディレクトリまで飛ぶ
rem 現在パスにsrcディレクトリがあるならそこまで戻る
rem 現在パスからの上位階層のディレクトリ内にsrcディレクトリがある場合もsrcディレクトリに入る
rem 例1
rem C:\develop\helloworld\src\mypackage\hoge\foo\bar>cdsrc.bat
rem C:\develop\helloworld\src>
rem 例2
rem C:\develop\helloworld>cdsrc.bat
rem C:\develop\helloworld\src>
rem 例3
rem C:\develop\helloworld\classes\mypackage\hoge\foo\bar>cdsrc.bat
rem C:\develop\helloworld\src>
rem 例4
rem C:\develop>cdsrc.bat
rem Not found "src" dir!
rem C:\develop>
rem C:\develop>echo %ERRORLEVEL%
rem 1
rem C:\develop>
if exist src goto label1
if "%~1" == "" goto label2
if "%~n1" == "src" goto label3
if "%~1" == "%~d1\" goto label4
cd ..
call "%~f0" "%cd%" "%~2"
goto endofbatch
:label1
if not "%~1" == "" goto label1b
cd src
if ERRORLEVEL 1 goto label4x
goto endofbatch
:label1b
cd src
if ERRORLEVEL 1 goto label4
goto endofbatch
:label2
call "%~f0" "%cd%" "%cd%"
goto endofbatch
:label3
cd "%~1"
if ERRORLEVEL 1 goto label4
goto endofbatch
:label4
echo Not found "src" dir!
cd "%~2"
exit /B 1
goto endofbatch
:label4x
echo Not found "src" dir!
exit /B 1
goto endofbatch
:endofbatch
@echo off
rem Javaなどでsrc以下の深いパッケージ名ディレクトリからsrcディレクトリまで飛ぶ
rem 現在パスにsrcディレクトリがあるならそこまで戻る
rem 現在パスからの上位階層のディレクトリ内にsrcディレクトリがある場合もsrcディレクトリに入る
rem 例1
rem C:\develop\helloworld\src\mypackage\hoge\foo\bar>pushdsrc.bat
rem C:\develop\helloworld\src>
rem C:\develop\helloworld\src>popd
rem C:\develop\helloworld\src\mypackage\hoge\foo\bar>
rem 例2
rem C:\develop\helloworld>pushdsrc.bat
rem C:\develop\helloworld\src>
rem C:\develop\helloworld\src>popd
rem C:\develop\helloworld>
rem 例3
rem C:\develop\helloworld\classes\mypackage\hoge\foo\bar>pushdsrc.bat
rem C:\develop\helloworld\src>
rem C:\develop\helloworld\src>popd
rem C:\develop\helloworld\classes\mypackage\hoge\foo\bar>
rem 例4
rem C:\develop>pushdsrc.bat
rem Not found "src" dir!
rem C:\develop>
rem C:\develop>echo %ERRORLEVEL%
rem 1
rem C:\develop>
if exist src goto label1
if "%~1" == "" goto label2
if "%~n1" == "src" goto label3
if "%~1" == "%~d1\" goto label4
cd ..
call "%~f0" "%cd%" "%~2"
goto endofbatch
:label1
if not "%~1" == "" goto label1b
pushd src
if ERRORLEVEL 1 goto label4x
goto endofbatch
:label1b
cd "%~2"
pushd "%~1\src"
if ERRORLEVEL 1 goto label4
goto endofbatch
:label2
call "%~f0" "%cd%" "%cd%"
goto endofbatch
:label3
cd "%~2"
pushd "%~1"
if ERRORLEVEL 1 goto label4
goto endofbatch
:label4
echo Not found "src" dir!
cd "%~2"
exit /B 1
goto endofbatch
:label4x
echo Not found "src" dir!
exit /B 1
goto endofbatch
:endofbatch
@echo off
rem Javaなどでsrc以下の深いパッケージ名ディレクトリからsrcディレクトリのパスを表示
rem 現在パスにsrcディレクトリがあるならそこまで戻る
rem 現在パスからの上位階層のディレクトリ内にsrcディレクトリがある場合もsrcディレクトリのパスを表示する
rem 例1
rem C:\develop\helloworld\src\mypackage\hoge\foo\bar>srcdir.bat
rem C:\develop\helloworld\src
rem C:\develop\helloworld\src\mypackage\hoge\foo\bar>
rem 例3
rem C:\develop\helloworld>srcdir.bat
rem C:\develop\helloworld\src
rem C:\develop\helloworld>
rem 例3
rem C:\develop\helloworld\classes\mypackage\hoge\foo\bar>srcdir.bat
rem C:\develop\helloworld\src
rem C:\develop\helloworld\classes\mypackage\hoge\foo\bar>
rem 例4
rem C:\develop>srcdir.bat
rem Not found "src" dir!
rem C:\develop>echo %ERRORLEVEL%
rem 1
rem C:\develop>
if exist src goto label1
if "%~1" == "" goto label2
if "%~n1" == "src" goto label3
if "%~1" == "%~d1\" goto label4
cd ..
call "%~f0" "%cd%" "%~2"
goto endofbatch
:label1
if not "%~1" == "" goto label1b
cd src
if ERRORLEVEL 1 goto label4x
echo %cd%
cd ..
goto endofbatch
:label1b
cd src
if ERRORLEVEL 1 goto label4
echo %cd%
cd "%~2"
goto endofbatch
:label2
call "%~f0" "%cd%" "%cd%"
goto endofbatch
:label3
cd "%~1"
if ERRORLEVEL 1 goto label4
cd "%~2"
echo %~1
goto endofbatch
:label4
echo Not found "src" dir!
cd "%~2"
exit /B 1
goto endofbatch
:label4x
echo Not found "src" dir!
exit /B 1
goto endofbatch
:endofbatch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment