コマンドプロンプト
cygwin?なにそれ?美味しいの?
真の漢ならコマンドプロンプト一本で勝負だ! >>319
一緒です。何も変わってないですよ。
普通にディレクトリ表現するとスラッシュになります。
そもそもWindowsはパクリOSなのバックスラッシュなのです。
なぜ¥表記になるかといえば同じ文字コードだからです。
よって「¥」と「\」は半角では同時に表記できません。
変わった理由はフォンを変えたためですよ。 Windowsの仕様がおかしいのが根本にあります。
日本語フォントの場合半角フォン+全角フォントで構成されています。
IEなどくそブラウザはフォント指定の際に欧文フォントの日本語フォントを割り当てるおかしな設定になっています。
あれがそのもそおかしい設定
普通に設定すれば日本語フォントの場合はパスの表記は¥になります。
\表記が出てる場合なら日本語の2倍とは文字化けするはずです。
しない場合は半角と全角では別なフォントが適用されていると思っていいでしょう。 >>320
日本語ちゃんと読もうな。
バックスラッシュが円マークになってしまった、
なんて話は誰もしてない。 友達から教えてもらった簡単確実稼げる秘密の方法
関心がある人だけ見てください。
グーグルで検索するといいかも『金持ちになりたい 鎌野介メソッド』
GULOH 以下のバッチtest.batを書きました
@echo off
setlocal enabledelayedexpansion
set xxx=
set aaa=%1
set xxx=yyy
echo %aaa% > aaa.txt
type aaa.txt
echo ---
type aaa.txt|more
echo ---
echo %aaa%
echo ---
echo %aaa%|more
echo ---
set aaa=!aaa:%%=^^^^%%!
echo %aaa%|more
rem End.
このバッチに引数 %xxx% を与えて実行すると
C:\>test.bat %xxx%
%xxx%
---
%xxx%
---
%xxx%
---
yyy
---
%xxx%
となりました(空行省略)
4つ目の出力がyyyになったのはechoとパイプの組み合わせで%xxx%がさらに展開される仕様であるためと思われますが
これについて詳しく解説したサイト等ご存知の方はいませんか?ちなみに5つ目の出力のようにすれば回避はできます。 コピーするファイル名に「+」を入れたのが、間違いだった。 robocopyコマンドを実行中に
time[Return]
を入力しておくとrobocopyの終了時間が分かって便利なのですが
開始時間忘れちゃうほど時間がかかってしまうことがあります。
どのように入力しておけばいいのでしょうか? >>330
頭を使えよ、ログを残せばいい。
ファイル名を作成時間とし
ログ内に開始時間と終了時間ば失敗したかどうか含めてわかる。 BATなのか直接入力なのか
直接入力ならリダイレクトしてるのか?
robocopyコマンドのレポートには開始時刻と終了時刻が入ってるけど? レスくださった方ありがとうございます。
↓いまのところこんな感じです。細かい意味は分かってません。
c:\>for /f "delims=" %a in ('time /T') do @set bbb=%a & xcopy /R:1 /W:1 'c:\aaaa c:\bbbb' & for /f "delims=" %a in ('time /T') do @set ccc=%a & echo %bbb% & echo %ccc%
robokopyはログでわかるので下値例がワルカッタ
何か他のコマンドxcopyとかでいいか、時間かかるようなコマンドさんで。
バッチファイルじゃなくて直接入力です。
メモは、そういうメモが沢山ありすぎてのです。
koreとかkore2とか190202newとかそういういうファイルや変数がたくさんありますので
やること種別にコマンドプロンプト開いて作業してます Win標準ではない外部コマンドを使ってもいいのであれば
昔2Kリソースキットに含まれていたtimethis(コマンドの実行時間を測定するコマンド)を使うと便利かも
本家Microsoftのサイトからはもう削除されてしまったようなので
Internet Archiveに保存されているインストーラ(timethis_setup.exe 118,512バイト)の直リン
http://web.archive.org/web/20140830232632/http://download.microsoft.com/download/win2000platform/timethis/1.00.0.1/nt5/en-us/timethis_setup.exe
ダウンロードしたインストーラを起動してインストールすると
デフォルトでは%ProgramFiles[(x86)]%\Resource Kit\にコマンド本体を含む一式がインストールされるのでそこにパスを通して使うか
またはインストールされた TIMETHIS.EXE 本体だけを別の場所や別PCにコピーしても使える
(7-Zipのようなツールで timethis_setup.exe → timethis.Msi → compmgmt.cab → TIMETHIS.EXE を直接取り出して使ってもおk)
こちらで確認した範囲では2K以降XP〜10(1507〜1809)まで32bit版/64bit版とも互換モードの設定とかはしなくてもそのまま使えている
使い方は実行するコマンドの前に timethis を付けて timethis コマンド とするだけ
コマンドの部分はコマンド直接指定(引数等を含む)でもバッチファイル等を指定してもおk
また TIMETHIS.EXE は32bitだけどコマンド部分に64bitコマンドを指定しても普通に動く
コマンドの実行が終わると最後に
TimeThis : Command Line : コマンド名
TimeThis : Start Time : ddd mmm dd HH:MM:SS yyyy
TimeThis : End Time : ddd mmm dd HH:MM:SS yyyy
TimeThis : Elapsed Time : HH:MM:SS.TTT
のようにコマンドの開始時刻/終了時刻/実行時間が表示されるのでログ的な意味合いでもベンチマーク的な意味合いでも使えると思う
(timethis を付けたことによるコマンド実行時間のオーバーヘッドは無視できる範囲)
なおコマンド部分にリダイレクト記号等がある場合や空白文字を含むパス/ファイル名等がある場合は
必要に応じて " や \" で適切に囲まないと意図した動作にならないので注意 >>337
それいいね
prompt $T $P$G >>337
ちなみに俺は何年か前に別スレで拾った以下のコマンドラインを今も使ってる
↓
prompt $g $t (%USERNAME%@%COMPUTERNAME%) "$p"$_$g >>337
顧客が本当に必要だったもの<この気分です
自分以外の人間が操作するかも知れず
バッチファイルやコマンドを生成して残しておくことは避けねばならず
またコマンドプロンプトさえあれば、という制限を設けておくことでそれが役立ちます
DOS時代にエスケープして色まで変えて変態かよって思ってましたが>>339さんのは
慣れると見やすいかも知れませんね。
万一テレビ取材が入るような場所にあるマシンだとしたら、ユーザー名とか
重要な情報だからやらない方がいいですねw
レスくださった方ありがとうございます。 で、コマンド入力時刻だと誤解して大変なことになると。 a.exeという実行ファイルがあるとして、
これを実行するときは「a.exe OPTION --FLAG X」をデフォルトにしたいです。
バッチファイルを考えてみましたが、
バッチファイル内でCMDにどうやって渡せば良いかわかりません。
バッチファイルじゃないとしても、
何か方法ないでしょうか? 失礼しました。
a.exeはコマンドプロンプトで実行する必要があります。 一人で連発失礼しました、自己解決。
wshで短縮ディレクトリ使えばできました。 >>344
a.exeは、カレントフォルダにもパスを通しているところにも置かないものとして
どこかパスの通してるところに、a.bat(又はa.cmd)という名前でバッチファイルを作る
@echo off
setlocal
set path=%SystemDrive%\bin\a;%path%
a.exe OPTION --FLAG X %*
endlocal
(a.exeを置いてあるフォルダのフルパスが%SystemDrive%\bin\aの場合) 起動しているソフト(.exe)のウィンドウサイズを任意のサイズに変更する事ってできますか?
「コマンドプロンプト"の"ウィンドウサイズ変更」って内容のブログばかりやたらヒットするので教えていただけると助かります バッチやVBSには無理
VBやVBAからなら可能、 半角スペース入りのファイル名指定の為にパラメータを""で囲んで実行
バッチファイル内で%~I指定で受け取ったパラメータから""を取り除き、それに別の文字列を連結してまた""で囲み直し
どこかで手順を間違えると該当ファイルを見つけてくれなくなる、あー面倒臭え >>349
超遅レスだけどありがとう、バッチでできたらよかったのに
そういえばタスクスケジューラでVBS使用してvbsと同一ディレクトリ内のcmdを画面に表示させずに起動っていうのが上手くいかなかった
vbsクリックすると正常動作するけどタスクスケジューラでvbs起動すると動作しなかった
タスクスケジューラで操作の編集にある開始の部分にvbsとcmdが置いてあるディレクトリを指定したら正常に動作した(正常って書き方は語弊があるかもしれないけど)
vbsでカレントディレクトリ移動とかよく分かってなかったから開始で指定するほうが気軽にできていいね コマンドプロンプトのclean allでHDDの中を抹消した時って復旧できる説とできない説があるんだけど真実はどっち? バッチ内に
a.exe の頭に絶対のパスを書けばいいのでは? Windowsってザルで脆弱性の温床だからね
パス設定ってのはルート内を探すためのもで
その中にファイルがあれば実行されてしまう。
バカな作りなので、画像ファイルに偽造して
ブラウザで読ませて、キャッシュの保存先を実行
バックドアのようなものがたくさんあったので
batchに規制をかけた、
その結果、コマンドプロンプトだと実行できるけど
ある時からbatchすると動かないということになったのです。
ファイルの場所は絶対でしていしてやらないと動かないのです。 スレタイの頭にスペースが入ってるのは何か意味あるの? >>354
意味不明
あなたの言うルートって何のこと?
規制ってなあに?
bat走らされてる時点で終わってるよね
ファイルを探すならdirコマンドおすすめ >>356
雨続きで脳にカビが生えた人もいるんだろう
くらいの想像力は働かせないと >>355
後に入ってるスペースは気にならないのか >>353
確かめてみたらcmdは絶対パス(環境変数込み)でVBSはパスの指定してなかった
なんでかと思って絶対パスにしたら日本語入ってるせいかエラー
多分VBSの文字コード変更(で対処できるか分からないけど)調べるのめんどくさくてパス指定無しにしたんだと思う
そもそもVBSは意味も分からずコピペしただけのものだからそれが問題かもしれんけど、コレ↓
Set objWShell = CreateObject("Wscript.Shell")
objWShell.run "ファイル名.cmd",vbHide タスクスケジューラの[操作]を設定する画面で
[開始(オプション)]にスクリプトの置き場所をフルパスで記入してみ 351=360で351でも書いたけど開始で指定したら上手くいった
vbs調べれば他のやり方があるのだろうし、そもそもパスに2バイトとスペース使わなければ解決しそうだけど 文字コードはANSI?
最近メモ帳はUTF-8になっちゃうし要注意 >>363
原因はそれだった、ありがとう
ちょっと前にそれのせいでテキスト検索時にエラー起きて地味に困ったのにすっかり忘れてた あっちの7bits文字はまったくおんなじだからな
ジャップはせいぜい苦労すればいいよ 今週中に完成させないといけないものがありまして、助けてください。
環境はWindowsServer2012です。
既存のADアカウントに、既存のセキュリティグループ(ドメインローカル)を追加し、
そのログを出力するプログラムを作成中です。
使用するコマンドはnet localgroupが良いと思っています。
実行するコード
例)net localgroup SGtest account1 /add /domain
が記載されたファイルは、csvファイルとして別にあります。
コードは全部で1000行程度あり、コマンドはすべてnet localgroupです。
一つのコードが実行された後、その戻り値を取得することは出来るのでしょうか?
成功か失敗かを、コードが記載されたcsvファイルに追記していきたいと思っています。
ご存じの方、教えてください。
よろしくお願いします。 ググることも出来ない運用屋?
返値の出力とか基本中の基本でしょうに 既存CSVへの列追記は無茶(出来るとしてもトリッキー)。
ログは出せる。 >>370
>>371
ありがとうございます・・・。
PowerShellなどを検討してみます。 >>369
今更だけど
エクセルを用いて
一件登録するコマンドの文字列作成するように作り
たくさんあってもエクセルで作れるでしょ。
エクセルからテキストに落とし込んで作ればすぐにできるでしょ。
実行時にログを出力するようにすればいいのかと
ログをテキストエディタで整形しエクセル集計すればいいんじゃないと
この手のトラブルって同性同名でアカウントが作れないトラブルに対して考慮する必要がある。 >>373
エクセルではできたのですが、それでは後続の処理に不都合が出てきたため、
別の方法を検討中でした。
現在もまだ出来てません。。。
明日、できるかな (´-ω-`ガンバロウ。 ファイル名ならある
このファイルにはアクセスできません
というファイル名にするとだまされた人がいた >>377
今どきrenコマンドを使ってファイル名を変更したと言うのか?
詳しい状況がイマイチ想像できんな… 遅延展開すると!パスに使えんのか。
!変数!でやっても!消されちゃうし、サブルーチン化して一応動いているが・・・ 全角!は問題ない。
ファイル名に使う半角文字は
英数字と - _ だけにしとけ。
全角スペースもやめとけ。 今まで使ってた自作のバッチファイルが、この前から突然Forループが動かなくなって強制終了する
何か変わったのか・・・? set /a 3+8
みたいな使い方で超簡単計算ができることを発見した
set /a 10/3
は切り捨てて3 forで何か変といえば一番に!(delayedexpansion)が思い浮かぶけど…
昔はループ内処理をもう一つのbatに押し込めてcallして展開を制御してたな
別bat作るのがキモいからと一時batを親batで動的に生成して用が済んだら消すとか、さらなるワクワクバッドノウハウが栄えたもんじゃよ for文全体が実行前に式評価される
inの括弧内もさらに式評価される
ぐらいを弁えていれば動作に不思議な点は無い 別のバッチを作成するのは面倒なんで
call :ラベル 引数
がお手軽 バッチ内の引数にonやoffを使うとおかしくなることがあるので
避けたほうがよい
たとえばecho off >>386
久し振りにバッチを書いたときなど…、遅延展開させるために
setlocal EnableDelayedExpansion
と宣言してるのに、変数呼び出しを%~%で書いてしまい、あれ何で遅延展開してくれないの?という下りを毎回する…。
遅延展開は理解していても、変数表記が変わるのは忘れやすい。。 >>388
:labelってcallで引数取れたのかよ!goto labelは投げ捨ててきます! >>392
set switch=on
echo %switch% 気に入った等幅フォントをコマンドプロンプトで使おうと思い、 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont に設定したのですが選択肢に出てきません
いろいろググってみると https://superuser.com/questions/1347724/how-can-i-add-additional-fonts-to-the-windows-console というページに行きあたって
どうやらフォントが等幅であるだけでなく他にもいくつかの条件を満たさなければいけない、ということまでは分かったのですが、ではどうすればいいのかが皆目わかりません
フォント作成ソフトか何かで当該フォントを読み込んでちょこっと設定をいじる、とかで上手くいかないものでしょうか? ご回答いただけるかたがいらっしゃらないようですので、質問を取り下げます。スレ汚し失礼しました
同じ質問を今度はフォント関連のスレに書き込むつもりですが、重複して目に入れられたかたはどうかご寛如ください Windows Terminal ならどうかな
settings.json を弄って コマンドの前に@や;を付けてもよかった、どういう意味なのか知らないが
例 vol, @vol. @@@vol, ;vol, ;;;vol
どれもエラーにならない 半角スペース問題を解決できないマイクロソフトはバカの集まり
Program Filesなんとかしろや 記号の一部でエラーになるのほんま問題。PowerShellに逃げたら、cmdとは別の文字でエラーするし! @echo off
title 管理者権限へと昇格中 ・・・ %date% %time:~0,-3% から開始
echo;★★★ 自動的に管理者権限へと昇格してバッチを実行します ★★★
echo;
Rem ----- 強制的に管理者権限で実行するようにします -----
echo;
echo; コマンドプロンプトを管理者として実行します
echo;
Rem -- 管理者確認 --
for /f "tokens=3 delims=\ " %%1 in ('whoami /groups^|find "Mandatory"') do set LEVEL=%%1
if not "%LEVEL%"=="High" (
powershell -NoProfile -ExecutionPolicy Unrestricted -Command "Start-Process \"%~f0\" -Verb runas"
exit
)
Rem これ以降に、実行したいコマンドを記述します (管理者権限として実行されます) DOSの出力先としてconやnulを使えるが
入力元にクリップボードの指定ができると便利
type clip みたいに >>395-397
> Windows Terminal (ウィンドウズ・ターミナル) は、マイクロソフトによって開発されたWindows 10およびWindows 11向けの端末エミュレータである。
> MITライセンスの下で公開されており、コマンドプロンプト、PowerShell、WSL及びSSHに対応している。
> GitHubにおいてソースコードが公開された後、2019年6月21日にMicrosoft Storeにおいてプレビュー版が公開された。
> 2022年後半に行われる予定のWindows 11の「22H2」の大型アップデートにおいて、コマンドプロンプトやPowerShellに代わり「Windows Terminal」が“デフォルト”のCUIになる予定。
俺も半年くらい前にWindows10(Home→Pro)をWindows11Proにバージョンアップしてから標準実装された「Windows Terminal」で、
フォントを簡単に変更できるようになったよ。個人的には「BIZ UD明朝」の12pまたは16pが現在オススメのフォント。 初歩的な質問かも知れなくて申し訳ないのだけど
コマンドプロンプトで
int wmain(int argc, wchar_t* argv[])
{
std::wcout << L"あいう" << std::endl;
return 0;
}
コンパイルしたUnicode版を実行しても ??? と表示されてしまうのだけどどうしたら正しく表示できるようになりますか? すみません
>>409は解決したので取り下げます
引数がUnicode版であってもcmdの入出力はSJISかutf8だけなんですね 個人的にアルマードの利確うんちが来るのはいいんだが
室内入ると拷問
バスがあの状態て説明つかないもんを食う それ以外に見所あればいらんよね
だからスレタイは盛られている 50歳くらいまで余裕で想像できる
ただ新たに食いたいと思わない方が続けられるんかな