コンピュータ名変更コマンドのバッチでひと工夫!Windows10の大量展開方法を解説

このQ&Aのポイント
  • Windows10の大量展開において、IPアドレスの設定やコンピュータ名の変更をバッチで行う方法を紹介します。
  • バッチファイル内で実行中のファイル名を取得し、その名前をコンピュータ名に設定する方法を解説します。
  • 初心者でも理解しやすい手順で、効率的にWindows10の大量展開を行うためのヒントを提供します。
回答を見る
  • ベストアンサー

コンピュータ名変更コマンドのバッチでひと工夫したし

Windows10を社員向けに大量展開しています。 IPアドレスの設定やコンピュータ名変更はバッチを作って流そうと思いますが、 コンピュータ名を入力する、という面部分をこんな風にしたいと思ってます。 wmic computersystem where name="%computername%" call rename name="実効しているバッチのファイル名" つまり、バッチファイルの名前がAであればバッチの中で、 いま実行されているファイル名情報を拡張子抜きで取得し その名前をコンピュータ名に設定する というシナリオです。 例)A.batを実行したとき=コンピュータ名:A   B.batをしたとき実行=コンピュータ名:B バッチのことはよく知らず、都度都度グーグルで調べながらしかできない素人レベルの質問で恐縮ですが実現方法のヒントなどいただくと幸です。 バッチでは無理かもしれませんが、、 よろしくお願いいたします。

  • Yepes
  • お礼率94% (1652/1746)

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6630/9393)
回答No.1

バッチファイル実行中は、 %0 という変数に実行中のコマンド名が入っています。 そしてただ %0 と書くのではなく、「%~n0」と書くことで、パス名や拡張子を省略した、ファイル名のみを取り出すことができます。 参考) https://web.plus-idea.net/2016/09/know-dp0-windows-meaning/ 次のようなバッチファイルで実験できます。 ----XYZ.cmd---- @echo off echo %0 echo %~n0 ----ここまで---- xyz[Enter] で実行→ "xyz" "XYZ" XYZ.CMD[Enter] で実行→ "XYZ.CMD" "XYZ" C:\temp\XYz[Enter] で実行→ "C:\temp\XYz" "XYZ" %~n0 の方なら、どのような実行方法でも統一してファイル名のみを取り出せるのがわかります。

Yepes
質問者

お礼

ありがとうございます。 コマンド操作そのものが不慣れなため、テストしてみます。 調べるといろいろ出てくるもんですね。

その他の回答 (1)

  • celtis
  • ベストアンサー率70% (2265/3203)
回答No.2

実行中のバッチファイルからファイル名を取り出すには、%~nx0を利用するといいみたいです。 下記ページが参考になるでしょう。 https://bayashita.com/p/entry/show/138 https://web.plus-idea.net/2016/09/know-dp0-windows-meaning/

Yepes
質問者

お礼

ありがとうございます。 リンク拝見しました。 使いこなせたら効率が倍増しそうです。

関連するQ&A

  • コンピュータ名変更・ドメイン参加を同時にしたい

    @echo off set /p INP="コンピュータ名を入力して下さい >" echo コンピュータ名を%INP%に変更・ドメイン参加をします。 rem ドメイン参加 wmic ComputerSystem WHERE name="%computername%" CALL JoinDomainOrWorkgroup Name="DomainName" Username="UserName" Password="PassWord" FJoinOptions=3 rem PC名変更 wmic computersystem where name="%computername%" call rename name=%INP% echo パソコンを再起動します。 pause rem 1秒後に再起動 shutdown -t 1 -r exit 上記をバッチでやろうとしているのですが、コンピューター名が変更出来ません。 ドメインは参加できています。色々試してみましたがわかりません。 何卒、宜しくお願い致します。

  • バッチファイル実行結果が半角スペースが入ってしまう

    PC情報を採取してテキストファイルへ出力するバッチファイルを作成しました。 バッチファイル自体は正常に動作するのですが、テキストに出力されるシリアル情報に半角スペースが入った状態で出力されてしまいます。 半角スペースが入らないようにするためにはどのようにすればよいでしょうか。 (例)本来は「R8X00215」と出力されて欲しいのに、「R 8 X 0 0 2 1 5」と出力されてしまう。 (バッチファイルの中身) set NAME=user echo 【PC名】>C:\Users\%NAME%\desktop\%COMPUTERNAME%.txt hostname>>C:\Users\%NAME%\desktop\%COMPUTERNAME%.txt echo 【シリアル情報】>>C:\Users\%NAME%\desktop\%COMPUTERNAME%.txt wmic bios get serialnumber>>C:\Users\%NAME%\desktop\%COMPUTERNAME%.txt echo 【ipconfig情報】>>C:\Users\%NAME%\desktop\%COMPUTERNAME%.txt ipconfig>>C:\Users\%NAME%\desktop\%COMPUTERNAME%.txt

  • バッチファイルで他のバッチファイルを呼び出した後、元に戻ってこれない。

    バッチファイルで他のバッチファイルを呼び出した後、元に戻ってこれない。 バッチファイルでほかのバッチファイルを呼び出した後の処理で困っています。 どうぞ教えてください。 「A.bat」というバッチファイルを実行すると、「1.bat」というバッチファイルを 実行させ、「1.bat」の実行結果によって、処理を分岐させたいと考えています。 「1.bat」をcallで呼び出し、実行はできたのですが、「1.bat」は最後にエンタキーを 押さないと終了しないようになっています。そのため、「エンターキーを押して終了させて ください」というメッセージが出たままの画面で終わってしまい、「A.bat」に帰ってくることが できません。 「1.bat」は中身を扱えないようにしてあるバッチファイルなので、こちらでエンターキーを 押さずに終了させるようにはできません。何かいい方法はないでしょうか?

  • 1つ下のファイルをコピーするバッチファイル

    コマンドプロンプトで実行するバッチファイル(x.bat)で C:\Aというフォルダのさらに1つ下のフォルダ (このフォルダは1つのみで名前は毎回変化します) の中にあるc.mpgというファイルを D:\Bフォルダにコピーするバッチファイルを 作りたいのですがどのように記述すればよいのでしょうか。 例えば、C:\A\data_20120922195626というフォルダ (data_20120922195626というフォルダ名は任意の名前ですが C:\Aフォルダの中にはこのフォルダ1つしかありません) の中に\c.mpgというファイルがあるとします。 バッチファイル x.bat を実行すると D:\Bフォルダにc.mpgをコピーしたいのです。 なお、data_20120922195626というフォルダの名前は バッチファイルを実行する時には毎回異っていますが バッチファイル実行中は変化しません。 VBscriptやwshなどは使わずWindosXPの標準DOS機能のみで お願いします。(WindosXP SP3)

  • Javaプログラムからバッチ起動

    Runtimeクラスを使用し、バッチファイルをJavaプログラム内で呼び出す処理を実装しました。Javaにより呼び出されるバッチファイル(X.bat)は、他の2つのバッチファイル(A.bat、B.bat)を呼び出すようにプログラムされています。ここで質問なのですが、実際にこのJavaプログラムを実行しX.batを呼び出し、最終的にA.bat、B.batが呼ばれているかどうかの確認をしたところ、どうもB.batが呼ばれずにA.bat終了後、処理が終了してしまっているなのですが、この原因についてご教授いただきたく質問いたしました。

    • ベストアンサー
    • Java
  • とあるコマンドをダブルクリックのみで実行するバッチ

    とあるコマンドをダブルクリックのみで実行するバッチファイルを作りたいと思っています。 C:user>aaa>[A(コマンド)] [B(ファイル名)] [C(コマンド)] と入力をし実行するのですが、AとCは変わらないですが、Bのみファイル名を指定するので、実行するたびに変わります。 AとBがそこそこ長文なので省略したいと思いました。 なので 例 --- ○○を実行します。 ファイル名を入力しEnterキーを押してください。 ファイル名:[Bに該当する部分] -- のようなバッチファイルを作りたいと思っています。 どのような構文にすれば良いのか教えていただけると嬉しいです。

  • WMICでリモートでバッチが実行できない

    こんにちは。お世話になります。 Windows7Proのコマンドプロンプトで、 wmic /node:"ノード名" /user:"ドメイン名\administrator" /password:パスワード PROCESS CALL CREATE "cmd.exe バッチファイル.bat" として、接続先のノード(同じくwindows7pro)でバッチを実行したいのですが、うまく動作しません。 実行すると、 (Win32_Process)->Create()を実行しています メソッドが正しく実行しました。 出力パラメーター instance of __PAREMATERS { ProcessId = 2280; ReruenValue = 0; }; と表示されるので、接続先のノードでプロセスID2280を調べると、確かにプロセスが存在するのですが、 動作していないようなのです。 試しに、その接続先のノードで、コマンドプロンプトを立ち上げ、 wmic PROCESS CALL CREATE "cmd.exe バッチファイル.bat" と記述してみると、正常に動作しました。 動作しないのはどのような原因が考えられるでしょうか? なんとか動作させたいのです。 何卒ご教授お願いいたします。

  • コマンドプロンプトでわからないことがあります

    例えばtxtファイルをドロップするとある動作をするバッチファイルAがあります。 特定のアドレスにあるtxtをドロップせずにAの操作を実行出来るバッチファイルBを、 Aのバッチを呼び出す形で作りたいです。 パッチファイルBを下のような感じで書いてみました。 ---------------------------------------- set BAT=Aのbatファイルのパス set TXT=C:\*.txt call %BAT% %TXT% ---------------------------------------- これでC直下にある全てtxtはAのバッチファイルである動作をするだろうと思ったのですが、 Aバッチファイルには『C:\*.txt』とそのまま読み込まれてしまいました。 *がワイルドカードとして使われていない感じです。 なぜでしょう?どうしたらいいでしょうか。

  • IEで接続したサーバ内のバッチファイルを実行したい

    IIS8で仮想ディレクトリを作り、そのディレクトリの参照を有効にする設定にしました。 クライアントからIEでディレクトリの一覧を見ることができるようなったので、そのディレクトリの中のバッチファイルを実行することで、クライアントのPCに、あるソフトが入るようにしたいです。 仮想ディレクトリ(フォルダ名を「A」とします)のフォルダの構成は、フォルダ「A」の直下にあるフォルダ「B」の中に「123.exe」、フォルダ「A」の直下にあるフォルダ「C」に「環境設定.aen」、フォルダ「A」の直下にあるフォルダ「D」には「123.bat」が入っています。 「123.bat」は、「123.exe」を実行した後、PCを再起動させるバッチファイルです。 「環境設定.aen」は、「123.exe」を実行してインストールされるソフトの環境設定のファイルです。 フォルダ「A」 |-フォルダ「B」 | |-123.exe | |-フォルダ「C」 |   |-環境設定.aen | |-フォルダ「D」 |   |-123.bat サーバーは、Windows Server 2012 です。 現在、123.batを実行しようとすると、「404-ファイルまたはディレクトリが見つかりません。」とエラーが出ます。バッチファイルではなく、直接「123.exe」を実行すると、ファイルのダウンロードが始まり、困っています。 質問したいのは、そもそもIEで接続したサーバーのフォルダ内のバッチファイルやexeファイルを実行して、クライアントのPCにソフトをインストールすることはできるのでしょうか? もし、できるのでしたら、方法は問いませんので、こういうやり方があるよというのを教えていただけないでしょうか? よろしくお願いいたします。

  • net use コマンドでのサーバ接続について

    初めまして。 現在、WINDOWS2003サーバ(Aサーバ)を使用して、サーバ内でBATファイルを実行しています。 BATファイルの実行方法は、別のWINDOWS2003(Bサーバ)のバッチファイルから Aサーバにnet useコマンドで接続し、AサーバのBATファイルを実行するというものです。 Aサーバには複数のバッチが存在し、同時にBサーバ、CサーバからAサーバの各BATファイル を実行しています。 そこで問題が発生しているのですが、BサーバからバッチファイルでAサーバのバッチファイルを実行している間に、同時にCサーバのバッチファイルからAサーバのバッチファイルを実行しようとしたところ、先に実行されていたBサーバのバッチの処理が突然終わってしまい(Aサーバへの接続が切れた?)、Cサーバのバッチだけが実行される状態になってしまいます。 BサーバのバッチとCサーバのバッチを同時に実行することはできないのでしょうか? そもそもAサーバにnet useコマンドで複数のサーバから接続できないということでしょうか? ちなみにサーバは複数ありB,Cサーバ以外にも5つほどのサーバで同時にAサーバに接続を行いたいと思っています。 かなりはまって困っています。 わかる方ご教授いただけますでしょうか。よろしくお願いします