5
票
承認済み
WindowsでGNU Screenのような操作がしたい
UNIX系OSとWindowsとではプロセスの管理方法が異なります。WindowsではサインインするとWindow StationとDesktopが作成され、各プロセスはWindow Stationに属します。ユーザー切り替えやリモートデスクトップで複数ユーザーが操作しても影響を受けないのは、このWindow Station単位で管理されているためです。
そのため、GNU ...
4
票
承認済み
PowerShellで単語検索して一部だけを取得したい
カンマでデータを区切るCSVでlist.txtが書かれているなら、次の方法で抜き出せます。
import-csv ./list.txt -Header ("h1","h2","h3")|%{
if( $_.h3 -match "ランド" ){
$id=$_.h1
$name=$_....
3
票
承認済み
CMDで変数名に変数を入れた場合の表示方法
SETLOCAL ENABLEDELAYEDEXPANSIONを使うと遅延評価が使えます。遅延評価は!変数名!と記述します。つまり!%A%EGOH!と記述すると%A%が展開されて!HOGE1EGOH!となり、遅延評価により1が表示されます。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET A=HOGE1
SET /A %A%EGOH+=1
ECHO !%...
3
票
承認済み
UTF-8で保存したバッチファイルを実行すると文字列がコマンドとして認識されてしまう
おそらく、コマンドプロンプトはすでにシフトJISとしてバッチファイル全体を読んでおり、バッチファイルの中でコードページを切り替えても手遅れなのでしょう。バッチファイルを起動する前にコードページを切り替えると動くかもしれません。
「↓」を UTF-8 でエンコードすると E2 86 93 です。E2 がシフトJISの第一バイトなので、86は第二バイトとして処理され、93 ...
3
票
承認済み
BATで0埋めの連番を出力したい
テクニックの問題として、1ではなく100など大きな数値で計算を行い、下2桁を参照することで簡単に0補完できます。
@ECHO OFF
SET NUM=100
:Loop
SET /A NUM+=1
echo %NUM:~-2%
IF NOT "%NUM:~-2%"=="00" GOTO Loop
EXIT /B
ちなみに008の次が1となる原因ですが、...
3
票
Windowsで.batファイルを右クリックしても"プログラムから開く"メニューがない
「送る」を使う方法があります。
エクスプローラーで shell:sendto を開いて、プログラムのショートカットを作成してください。.bat ファイル を右クリック→送る→作成したショートカット を選べばプログラムから開くことが出来ます。
3
票
承認済み
クライアントアプリ(.exe)の入力ボックスに値を自動入力させるアプリ
対象となるOSはWindowsでしょうか?
キーボード操作だけで操作が可能なのであればJavaScript(正確にはJScript)でキーボード操作をするのは難しくはありません。
例えば以下のような感じかと思います。
shell = new ActiveXObject('WScript.Shell')
// クライアントアプリを立ち上げる(この例ではメモ帳)
shell.Run('notepad....
3
票
echoの出力を、(パイプ?)ファイル出力とクリップボードへ連続出力したい。
2行目と3行目が対等でないことが気になりました。2行目は既存のコンテンツを残したまま追記しています。しかし3行目はそうではなくクリップボードの更新です。echoした1行分だけの値になります。
これは本当に望む操作なのでしょうか?
chcp 65001
echo %date% %TIME:~0,8% コメント >> txt.txt
ほかにもいろいろ >> txt.txt
...
2
票
Windowsで.batファイルを右クリックしても"プログラムから開く"メニューがない
送るなどに入れても実現できますが、右クリック~送る~Atomと選択するよりも、右クリック~Atomとできた方がワンクッション少なくて良いかな?と思うのでレジストリをいじる方法を提案します。
レジストリを開く
Windows + rを押してregeditを入力、レジストリエディタを起動します。
\HKEY_CURRENT_USER\Software\Classes\*\に移動します。
*...
2
票
windows10のコマンドプロンプトで数字の1が表示される
Batch files - How To ... Display and Redirect Output には以下のように書かれています。
When we use > to redirect Standard Output, CMD.EXE interprets this as 1>, as can be seen by writing and running ...
この投稿は @...
コミュニティ wiki
2
票
Windowsフォルダ内のファイルを(ユーザー操作することなく)JavaScriptで自動読み込みしたい
耳慣れない言葉ですが、ヘッドレスブラウザなら可能だと思います。
Node.jsならWindows内のフォルダへファイル出力できます。
Puppeteerでヘッドレスブラウザを試してみてはいかがでしょうか。
2
票
承認済み
BATのFORでリストを取得するときの並び順について
単純に数値.txtを数字順にソートするだけならばteratailの回答や後述のバッチファイル(test.bat)でソートできます。
しかしコードが複雑で流用しにくいものになりがちです。
私もPowershellの使用をおすすめします。
テスト用フォルダにサンプルファイルを書き出すスクリプト
回答の結果を例示するための下準備用Powershellスクリプトです。
無視して構いません。
# ...
2
票
batファイルでrobocopyを使用し、スペースを含む名前のファイルをコピーしたい
スペースを含むファイル名をダブルクォートでくくってみてください。
"robo robo.txt"、"robo 123.ppt"
2
票
承認済み
Accessのマクロからftpアップロードのbatファイル実行について
ftpcopy_面談.bat
ftp -s:ftp_bat.txt
このコマンドですと、カレントディレクトリにあるftp_bat.txtを検索します。
エクスプローラー上でftpcopy_面談.batをダブルクリックして実行した場合、ftpcopy_面談.batが置かれているディレクトリがカレントディレクトリに設定されるためftp_bat.txt見つけることができます。
しかし、...
2
票
batファイルでrobocopyを使用し、スペースを含む名前のファイルをコピーしたい
for文で処理せずともrobocopyの引数で対応出来ると思います。
rem //コピー元のフォルダ���ス指定
set fs_src=※任意のフォルダパス
rem //コピー先のフォルダパス指定
set fs_dest=※任意のフォルダパス
rem //抽出条件文字の指定
set name=robo
robocopy "%fs_src%" "%fs_dest%" "*%name%*.*"
2
票
承認済み
Windows10のバッチファイルで、SSHクライアントを起動させてからコマンドを入力させる方法
ssh __Hoge
echo "hello"
これでは、sshが終了してからechoを実行することになります。
sshのmanpageには
ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E ...
2
票
クライアントアプリ(.exe)の入力ボックスに値を自動入力させるアプリ
バッチでは厳しいですが、dotnetのUI Automationをpowershellから使えば望むことができます。
参考サイトは、powershellで電卓を動かす例。
あと、外部ツールを使ってよいなら、
autoit
auto hot key
uwsc
などのウインドウズ自動化ツールを使えば簡単だと思います。
2
票
バッチファイルにドラッグ&ドロップして、テキストファイルであれば名前を変更したい
if %1 == *.txt (
rename %1 sample.txt
) else (
echo textファイルではありません
)
を下記に変えてみてください。
echo %~n1 | find ".txt" 1>nul
if not ERRORLEVEL 1 (
rename %1 sample.txt
) else (
echo ...
2
票
バッチファイルが起動しない
問題点1
過去からの互換性を維持する目的で、現在においても「バッチファイル」は cmd.exe 上で動かし、なおかつ(デフォルトでは)各国語の伝統的エンコーディングを使う仕様です。つまり日本語ではバッチファイルとして使うべきエンコーディングはいわゆる Shift-JIS もちょっと厳密には CP932 なり MS932 となります。(現代的 UTF-8 が使えないわけではないが詳細略)
CP932 ...
2
票
Windowsバッチファイルの"SET PATH"と同等の処理をPythonから実行したい
一般論として
環境変数 PATH はプロセスを起動する際に実行ファイルを検索する対象を示します。
環境変数は子プロセスに引き継がれます。
この2つから、2つの効果が得られます。
test.exe を起動する際に環境変数 PATH の中から検索されます。
test.exe が更に子プロセスを起動する際、(test.exeが明示的に排除しなければ)環境変数 PATH の中から検索されます。
...
2
票
Windowsバッチファイルの"SET PATH"と同等の処理をPythonから実行したい
プログラム起動するだけなら直接起動可能
import subprocess
from pathlib import Path
def execpg():
for p in ('../../samples/external/opencv/bin', '../../bin'):
prog = Path(p)/ 'test.exe'
if prog.exists(...
2
票
承認済み
cl.exe を直接実行して MessageBox で MessageBoxW が使用されるようにしたいのですがうまくいきません。
return MessageBox(NULL, L"hello, world", L"caption", 0);
既に解決済みですが、TCHAR、wchar_t、charを適切に使い分けることをお勧めします。つまり、
関数にMessageBoxを使うのであれば、文字列引数はTCHARに
文字列引数にL""を使うのであれば、...
1
票
バッチファイルで変数を���数行にわけて指定したときのダブルクォーテーションの指定について
スマートとは言えませんが、単なる環境変数の編集なので、1度にやろうとせず順次追記していけば良いのではないでしょうか?
%PATH%の編集(追記)と同じ考え方ですね。
set runcmd="%ProgramPath%"
set runcmd=%runcmd% /var1="%var1%"
set runcmd=%runcmd% /var2="%var2%"
echo "running %...
1
票
batファイルでrobocopyを使用し、スペースを含む名前のファイルをコピーしたい
FORコマンドのヘルプで説明されていますが、~を付けることで、変数を括る"を削除します。
その上で、改めて"で括ることで空白を正しく扱えるようになります。
for /r %%I in (*%name%*.*) do robocopy ~ "%%~I"
1
票
特定の文字列をファイル名に含むものだけを探して別フォルダにコピーしたい
以下の記事の応用で、forを利用すれば出来るでしょう。
「指定ディレクトリ」内の「任意の階層」にある「指定ディレクトリ名」内にある全ファイルを抽出したい
こんな感じでしょうか。
for /r TargetDir %I in (*test*.*) do robocopy %~pI DestDir %~nxI
...
1
票
特定の文字列をファイル名に含むものだけを探して別フォルダにコピーしたい
あまりスッキリした方法ではないですが、以下のコマンドでどうでしょうか。
サブディレクトリのコピーを行ってから、カレントのコピーをしています。
cd [FromDir]
for /d %i in (*) do robocopy %i [ToDir] *test*
robocopy [FromDir] [ToDir] *test*
1
票
batで毎日ログをとって比べるプログラムを作りたいです。
要件を正しく把握できているかわかりませんが、PowerShellだと以下のようになります。
今日のログファイルと今日以外のログファイルの中で最新のファイルとを比較しています。
# ログファイルがあるフォルダ
$logDir = "C:\Users\user\Desktop\batdevelopment\logs"
# 今日のログファイル名
$logFileNameToday = "{0:...
1
票
承認済み
「指定ディレクトリ」内の「任意の階層」にある「指定ディレクトリ名」内にある全ファイルを抽出したい
問:先頭の*を外したらおかしなことになりました。これはなぜ下記結果になるのですか?
おそらく、/Dの指定と()の中にワイルドカードがあるかどうか、の組み合わせが原因でしょう。
*(ワイルドカード)がある場合は、そのワイルドカードを含むディレクトリ名を検索して見つかったディレクトリ名を変数に入れる、指定にワイルドカードが無い場合は、指定されたディレクトリ配下の全ディレクトリに対して()...
1
票
「指定ディレクトリ」内の「任意の階層」にある「指���ディレクトリ名」内にある全ファイルを抽出したい
質問に直接答えていませんが、私が使っている方法を紹介します。
目的のパス(※1)を指定してdirを実行し、結果をリストファイル(例ではlist.txt)にリダイレクトする。
リストファイルを使ってforで各ファイルの情報を出力する。
※1 例ではC:\x\P\M\HOGE\
※2 例ではlist.txt
例
set LIST=list.txt
set DP=C:\x\P\M\HOGE\
dir ...
1
票
バッチファイルからのSSH接続でエラー: Identity file key.pem not accessible: No such file or directory
そのファイルがない、といってます。
ファイルパスがあってるかをよくチェックしましょう
そして、バッチファイルで実行ではなく、コマンドプロンプトからsshコマンドを実行してみてください。
無効化に投票
関連するタグ
batch-file × 76windows × 31
powershell × 8
windows-10 × 5
python × 4
ssh × 3
javascript × 2
c++ × 2
command-line × 2
shell × 2
コマンドプロンプト × 2
vbs × 2
php × 1
python3 × 1
linux × 1
ubuntu × 1
git × 1
r × 1
vscode × 1
bash × 1
api × 1
vba × 1
excel × 1
virtualbox × 1
vagrant × 1