2022年01月15日

Windowsプログラム一括起動・配置バッチファイルでスタートダッシュ!!

 youtube配信をするようになり、youtubeの配信用に録画したり、作業時間の記録したり、作業資料をだしたりと、一つの作業をするのに起動するプログラムが多くなったので一括起動するためのWindowsバッチファイルを作成したので置いておきます。

 ダラダラと考えながら起動・配置などでセッティングに10分ほどかかっていたものが1分程度に短くなるので、短時間でも作業時間を確保できるようになります。

1.主に使用するコマンド・プログラム


■主に使用するコマンド
  • start…新しいウィンドウからプログラム・ファイル・URLを開く。
     例)start "【ウィンドウのタイトル】" "【起動プログラムへのパス】"

  • call…プログラム・バッチファイルの起動。
     例)call 【バッチファイルへのパス】

  • taskkill…プログラムの終了。
     例)taskkill /IM "【プログラム名】" /F

■主に使用するフリーソフト
  • VbWinPos.exe…ウィンドウの配置を覚え再配置する。
     UIから"座標セット"ボタンを押すと登録ウィンドウを一括配置

2.簡易バッチファイル例


以上からfirefoxの特定URLを起動して配置する簡単にバッチファイルを作ると以下のようになります。"一括起動バッチプログラム""一括終了バッチプログラム"。いずれもファイルをダブルクリックする事で開始・終了ができます。

 作業開始時 StartAll.bat
@echo off
rem --firefoxを開く--
start "firefoxから配信サイトを開く" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -new-tab "https://studio.youtube.com/video/GeheGehePPk/livestreaming"

rem --VbWinPos.exeを開く--
start "ウィンドウ配置プログラムの起動" "F:\Non registerd Program Files\vbwinpos\VbWinPos.exe"
       
VbWinPos.exeの"座標セット"ボタンを押す。


 作業終了時 EndAll.bat
@echo off
rem --firefoxを閉じる--
taskkill /IM firefox.exe

rem --VbWinPos.exeを閉じる--
taskkill /IM "VbWinPos.exe"

 ちなみにStartAll.bat内の以下の-new-tabオプション以降はでfirefox.exe の引数です。
start "firefox" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -new-tab "https://studio.youtube.com/video/Kappamaki/livestreaming"
だから以下でも開くことができます。
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -new-tab "https://studio.youtube.com/video/Kappamaki/livestreaming"
ただstartコマンドを使うと直接実行と違いプログラムの起動を待たずに次のプログラムを起動させる並列実行ができるので早いです。


3.1具体的な一括起動バッチ


 一つのファイルを開くだけならショートカットを用意するほうが早いのですが、実際はたくさんのプログラムやファイルにアクセスする事になるので用意しておくと便利です。参考のために私が実際に漫画作画配信用に作成したファイル(一部パス等は書き換え)を置いておきます。

 一括起動バッチ StartAll.bat
@echo off

rem ■■■■■■■■■■■■■■■■■■■■■■
setlocal
rem ------ 定義、以下を環境に合わせて定義 ------
rem SERVER_PATH=【ダウンロード元のサーバーのIPかホスト名から始まるパス。絶対パスが都合が良い】
set SERVER_PATH=\\server.hogehoge.jp\hogehoge\workspace\comic_leak
rem USERNAME=【sambaのユーザー名】
set USERNAME=karasuno10
rem PASSWORD=【sambaユーザーのパスワード】
set PASSWORD=karasuno10pass

rem ------ 処理 ------
rem 1. 接続
net use %SERVER_PATH% %PASSWORD% /user:%USERNAME% /Y
rem ■■■■■■■■■■■■■■■■■■■■■■

rem 2. 処理

rem -------サーバから他PCからの更新をダウンロード----
cd "C:\Users\hogehoge\Desktop\hiroshi\comic_leak"
call download.bat


rem -------漫画フォルダを開く--------
start ”explorerでフォルダを開く” "C:\Users\hogehoge\Desktop\hiroshi\comic_leak"

rem -------漫画ファイルを開く-------
start "CLIPStudioPaintで開く" "C:\Users\hogehoge\Desktop\hiroshi\comic_leak\comic_leak\leak.cmc"

rem ------PureRefから資料を開く--------
start "PureRefから資料を開く" "%SERVER_PATH%\comic_Leak_siryo\P37\NewScene.pur"

rem --------配信用ソフトのobsを開く-------------
cd "C:\Program Files\obs-studio\bin\64bit"
start "obs" obs64.exe

rem --------関連サイトを開く プロジェクト管理用redmineチケットを開き作業時間記録開始。youtubu配信サイトを開く-------
start "" "https://hogehoge.jp/redmine/issues/75"
start "firefox" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -new-tab "https://studio.youtube.com/video/Kappamaki/livestreaming"
start "" "https://hogehoge.jp/redmine/time_loggers/start?issue_id=75"

rem --------ストップウォッチソフトOnlyStopWatch_p.exeの起動----------
start "" "F:\Non registerd Program Files\OnlyStopWatch_Portable\OnlyStopWatch_p.exe"

rem --------カーソルを見やすくするソフトkokomiteの起動----------
start "" "F:\Non registerd Program Files\Kokomite\Kokomite.exe"

rem --------ウィンドウ位置を整形ソフトVbWinPosの起動----------
start "" "F:\Non registerd Program Files\vbwinpos\VbWinPos.exe"

rem echo 画面を閉じるには何かキーを押してくだささい。
rem PAUSE

 一括終了バッチ EndAll.bat
@echo off

rem -------漫画フォルダを閉じる--------
rem taskkill /IM "C:\Users\hogehoge\Desktop\hiroshi\comic_leak"
taskkill /IM "explorer.exe" /F
start "" "C:\Windows\explorer.exe"

rem -------漫画ファイルを閉じる-------
rem taskkill /IM "C:\Program Files\CELSYS\CLIP STUDIO 1.5\CLIP STUDIO PAINT\CLIPStudioPaint.exe"
call taskkill /IM "CLIPStudioPaint.exe"

rem ------資料を閉じる--------
taskkill /IM "PureRef.exe"

rem --------obsを閉じる-------------
taskkill /IM obs64.exe

rem --------firefoxを閉じる-------------
taskkill /IM firefox.exe

rem --------ストップウォッチを閉じる----------
taskkill /IM "OnlyStopWatch_p.exe"

rem --------kokomiteの閉じる----------
taskkill /IM "Kokomite.exe"

rem --------ウィンドウ位置整形閉じる----------
taskkill /IM "VbWinPos.exe"

rem --------関連サイトを閉じる-------
start "" "https://hogehoge.jp/redmine/time_loggers/stop"

echo サーバへの漫画ファイルアップロードには何かキーを押してくだささい。
PAUSE
rem -------サーバへアップロード----
cd "C:\Users\hogehoge\Desktop\hiroshi\comic_leak"
call upload.bat
以上です。

3.2具体的一括起動バッチの解説


 少し解説をすると、ファイルブラウザは特定のフォルダを指定してウィンドウを終了させる事ができなかったのでWindowsのファイルブラウジングプログラムであるexplorerを終了させています。また、このままだとファイルブラウジングができなくなるので再起動させています。
taskkill /IM "explorer.exe" /F
start "" "C:\Windows\explorer.exe"

 ■で囲まれた所はファイルサーバににアクセスするためのパスワード認証処理になります。またstartAll.bat内のcd~call download.bat、EndAll.bat内の最後のほうのcd~call upload.batなどはファイルサーバとローカルPCとのフォルダ同期バッチです。今回は大きく取り上げなかったですが、以下に詳細があります。
https://karasuno10.seesaa.net/article/474436293.html?1642229509

 またEndAll.bat内の以下はClipstudioを保存するのを待つための処理になります。保存後にコマンドプロンプトウィンドウで何かキーを押すと、アップロード処理が再開されます。
echo サーバへの漫画ファイルアップロードには何かキーを押してくだささい。
PAUSE
rem -------サーバへアップロード----
cd "C:\Users\hogehoge\Desktop\hiroshi\comic_leak"
call upload.bat
烏野の箱庭ページ烏野の箱庭 …動画・絵・漫画・脚本などの作品紹介
烏野のyoutubeページ烏野博史動画 …広告・実験・講習用映像のyoutubeチャンネル
烏野のyoutubeページうのひろし日々描描 …作画配信のyoutubeチャンネル
UNOUNOのPixiv …絵、デザイン資料、漫画、実験画像
karasuno10をフォローしましょうkarsauno10のTwitter …考え、宣伝
posted by karasuno10 at 15:18 | Comment(0) | PC技術 | このブログの読者になる | 更新情報をチェックする

2020年04月06日

sambaファイルサーバへのアップロード・ダウンロード同期Windowsパッチ

普段サーバにデータを置いて作業をしているのですが、描画ソフトClipstudioがネットワークからの参照を拒否してくるので、解決策としてアップロード・ダウンロード用のWindowsパッチを組みました。いまの所、漫画・絵コンテ制作に使えています。

・ローカル作業フォルダをパスワードのあるサーバのフォルダと同期。
・作業フォルダと同じ階層に置いておく事を想定。
・各作業PCに置いたbatファイルを使用。
・一日の作業終わりにupload.batをダブルクリック。
・一日の作業はじめにdownload.batをダブルクリック。
・同期先が新しいと保留。確認を表示。

以下、upload.batとdownload.bat。 "■■■"の間の"同期元フォルダ、同期先フォルダ、ユーザー、パスワード"の変数を書き換えてください。

upload.bat

@echo off
rem 【ローカルの作業フォルダにおいてこのバッチファイルをダブルクリックする事でサーバのフォルダと同期します。】

setlocal
rem ■■■■■■■■■■■■■■■■■■■■■■
rem ------ 定義、以下を環境に合わせて定義 ------
rem SERVER_PATH=【アップロード先のsambaサーバーのIPかホスト名から始まるパス。絶対パスが都合が良い】
set SERVER_PATH=\\192.168.11.25\path\to\comic_folder
rem LOCAL_PATH=【アップロード元となるローカルフォルダのパス、バッチファイルupload.batからの相対パスが都合が良い】
set LOCAL_PATH=comic_folder
rem USERNAME=【sambaのユーザー名】
set USERNAME=hoge
rem PASSWORD=【sambaユーザーのパスワード】
set PASSWORD=hogepassword
rem ■■■■■■■■■■■■■■■■■■■■■■
rem ISCHANGEは管理用なので変更しないでください------------------
set ISCHANGE=0
rem ------------------

rem ------ 処理 ------
rem 1. 接続
net use %SERVER_PATH% %PASSWORD% /user:%USERNAME% /Y
rem 2. 処理
chcp 65001 > nul
robocopy %LOCAL_PATH% %SERVER_PATH% /E /XO /NP /V /LOG:upload.log
rem 3. 切断
net use %SERVER_PATH% /delete > nul


rem 4.結果の連絡
chcp 932 > nul
rem 新しファイルの確認。
findstr /I /c:"New File" upload.log > nul
if "%ERRORLEVEL%"=="0" (
echo 新しいファイルをアップロードしました。
echo ----------------------------------------
findstr /I /c:"New File" upload.log
echo ----------------------------------------
set ISCHANGE=1
)

findstr /I "Newer" upload.log > nul
if "%ERRORLEVEL%"=="0" (
echo ファイルをアップロード更新。
echo ----------------------------------------
findstr /I "Newer" upload.log
echo ----------------------------------------
set ISCHANGE=1
)
rem 古いファイルの確認。
findstr /I "older" upload.log > nul
if "%ERRORLEVEL%"=="0" (
echo こちらが古いのでアップロードを見送りました。ご確認ください。
echo ----------------------------------------
findstr /I "older" upload.log
echo ----------------------------------------
set ISCHANGE=1
)

rem 不明なファイルの確認。
findstr "EXTRA" upload.log > nul
if "%ERRORLEVEL%"=="0" (
echo アップロード先に妙なファイルがあるのを放っておきました。ご確認ください。
echo ----------------------------------------
findstr "EXTRA" upload.log
echo ----------------------------------------
set ISCHANGE=1
)
rem 何かしらの特記事項があればキー入力があるまでストップ。
if "%ISCHANGE%"=="1" (
echo 画面を閉じるには何かキーを押してくだささい。
PAUSE > nul
)


download.bat

@echo off

rem 【ローカルの作業フォルダにおいてこのバッチファイルをダブルクリックする事でサーバのフォルダと同期します。】

setlocal
rem ■■■■■■■■■■■■■■■■■■■■■■
rem ------ 定義、以下を環境に合わせて定義 ------
rem SERVER_PATH=【ダウンロード元のサーバーのIPかホスト名から始まるパス。絶対パスが都合が良い】
set SERVER_PATH=\\192.168.11.25\path\to\comic_folder
rem LOCAL_PATH=【ダウンロード先となるローカルフォルダのパス、バッチファイルdownload.batからの相対パスが都合が良い】
set LOCAL_PATH=comic_folder
rem USERNAME=【sambaのユーザー名】
set USERNAME=hoge
rem PASSWORD=【sambaユーザーのパスワード】
set PASSWORD=hogepassword
rem ■■■■■■■■■■■■■■■■■■■■■■
rem ISCHANGEは管理用なので変更しないでください------------------
set ISCHANGE=0
rem ------------------

rem ------ 処理 ------
rem 1. 接続
net use %SERVER_PATH% %PASSWORD% /user:%USERNAME% /Y
rem 2. 処理
chcp 65001 > nul
robocopy %SERVER_PATH% %LOCAL_PATH% /E /XO /NP /V /LOG:download.log
rem 3. 切断
net use %SERVER_PATH% /delete

rem 4.結果の連絡
chcp 932 > nul
rem 新しファイルの確認。
findstr /I /c:"New File" download.log > nul
if "%ERRORLEVEL%"=="0" (
echo 新しいファイルをダウンロードしました。
echo ----------------------------------------
findstr /I /c:"New File" download.log
echo ----------------------------------------
set ISCHANGE=1
)

findstr /I "Newer" download.log > nul
if "%ERRORLEVEL%"=="0" (
echo ファイルをダウンロード更新。
echo ----------------------------------------
findstr /I "Newer" download.log
echo ----------------------------------------
set ISCHANGE=1
)
rem 古いファイルの確認。
findstr /I "older" download.log > nul
if "%ERRORLEVEL%"=="0" (
echo あちらが古いのでダウンロードを見送りました。ご確認ください。
echo ----------------------------------------
findstr /I "older" download.log
echo ----------------------------------------
set ISCHANGE=1
)

rem 不明なファイルの確認。
findstr "EXTRA" download.log > nul
if "%ERRORLEVEL%"=="0" (
echo ダウンロード先に妙なファイルがあるのを放っておきました。ご確認ください。
echo ----------------------------------------
findstr "EXTRA" download.log
echo ----------------------------------------
set ISCHANGE=1
)
rem 何かしらの特記事項があればキー入力があるまでストップ。
if "%ISCHANGE%"=="1" (
echo 画面を閉じるには何かキーを押してくだささい。
PAUSE > nul
)

計算結果の一時保存が汚くなりそうだったので避けました。
重複処理がありますが、軽快で簡単に使えるかと思います。
烏野の箱庭ページ烏野の箱庭 …動画・絵・漫画・脚本などの作品紹介
烏野のyoutubeページ烏野博史動画 …広告・実験・講習用映像のyoutubeチャンネル
烏野のyoutubeページうのひろし日々描描 …作画配信のyoutubeチャンネル
UNOUNOのPixiv …絵、デザイン資料、漫画、実験画像
karasuno10をフォローしましょうkarsauno10のTwitter …考え、宣伝
posted by karasuno10 at 19:04 | Comment(0) | PC技術 | このブログの読者になる | 更新情報をチェックする

2020年02月29日

gitのためにbashを使ったフォルダ内の一括リネーム

手元のgitリポジトリをgit mv でフォルダ内の一括リネームをしたかったので考えました。

・gitbashを使ってリネームをします。
・カレントディレクトリは目的とするgitリポジトリです。
・”04A_002”→"A04_002"と名前を変更したい場合は以下。
$ ls |grep A_ | sed -e 's/\(..\)A_\(.*\)/\1A_\2\nA\1_\2/' |xargs -n 2 git mv
今回は "ls |grep A_ "で変更対象のファイル名をリストアップ。sedコマンドでリストのファイル名を使い置換。置換後の文字列の間に\nを入れて"リネーム前"と"リネーム後"の二つのファイル名を作ってしまうのがポイントです。リスト項目を順番に処理するxargsコマンドに"リネーム前"と"後"の二つの名前を渡します。xargsで引数を二つごとに取り出すオプションが"-n 2"です。最後にgit mvをかけます

引数を任意の場所に置くときはshコマンドを使い以下のようにします
$ ls |grep A_ | sed -e 's/\(..\)A_\(.*\)/\1A_\2\nA\1_\2/' |xargs -n 2 sh -c 'git mv $0 $1'
■参考
xargsコマンドで覚えておきたい使い方・組み合わせ7個(+1個)
烏野の箱庭ページ烏野の箱庭 …動画・絵・漫画・脚本などの作品紹介
烏野のyoutubeページ烏野博史動画 …広告・実験・講習用映像のyoutubeチャンネル
烏野のyoutubeページうのひろし日々描描 …作画配信のyoutubeチャンネル
UNOUNOのPixiv …絵、デザイン資料、漫画、実験画像
karasuno10をフォローしましょうkarsauno10のTwitter …考え、宣伝
posted by karasuno10 at 22:55 | Comment(0) | PC技術 | このブログの読者になる | 更新情報をチェックする