質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

1回答

3627閲覧

バッチファイルでテキストファイルから読み込んだ値を使用したファイルを作成したい

cham2525

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

1クリップ

投稿2021/06/17 11:45

【前提・実現したいこと】
バッチファイルでテキストファイルを読み込み、読み込んだ値を使用した空ファイル・フォルダを作成したいです。

上記に記載したことを実現したいのですが、フォルダ名には読み込んだ値を使用できる一方、ファイル名には使用することができず困っております。ローカル上では動いたのですが、ネットワークドライブ上でうまく動かないため、ご助言いただけないでしょうか。

【状況】
バッチファイル:test.bat
読み込むファイル:number.txt
上記は同じディレクトリにあります。

【環境】
Windows10

バッチファイルの中身は以下です。↓
pushd %~dp0
@echo off

set filename="No."
setlocal enabledelayedexpansion

for /f "delims=" %%a in (%~dp0/number.txt) do (
set FILE=%filename%%%a
mkdir !FILE!
cd !FILE!
copy nul !FILE!.xlsx
cd ../
)
endlocal
pause

読み込むファイルの中身は以下です。↓
1
2
3

【結果】
No.1、No.2、No.3というフォルダは同じディレクトリにできるが、中にファイルが作成されません。
画面には「コマンドの構文が誤っています。」と出力されます。

【試したこと】
・上記バッチファイルのpushd %~dp0を削除してローカルで実施したところきちんとファイルも作成されました。
・ファイル名をa.xlsxとしたところファイルが作成されました。
⇒ネットワークドライブ上ではファイル名に読み込んだ値を使用していると構文が誤っていると出力されてしまうのでしょうか?

ネットワークドライブ上でもローカルで実現できたようにファイル名に読み込んだ値を使用したいのですが、うまくいかないためどのようにしたら解決できるかアドバイスを頂きたいです。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2021/06/17 12:03

まずは、@echo off を削除して、どこでエラーになっているのか見ましょう。
cham2525

2021/06/17 12:57 編集

削除したところ、以下のようになりました。フォルダのパスはネットワークドライブ上のバッチファイルを置いている場所までのパスになります。 C:\Windows>pushd フォルダのパス Z:フォルダのパスの一部>set filename="No." Z:フォルダのパスの一部>setlocal enabledelayedexpansion Z:フォルダのパスの一部>for /F "delims=" %a in (フォルダのパス/number.txt) do ( set FILE="No."%a mkdir !FILE! cd !FILE! copy nul !FILE!.xlsx cd ../ ) Z:フォルダのパスの一部>( set FILE="No."1 mkdir !FILE! cd !FILE! copy nul !FILE!.xlsx cd ../ ) コマンドの構文が誤っています。 Z:フォルダのパスの一部>( set FILE="No."2 mkdir !FILE! cd !FILE! copy nul !FILE!.xlsx cd ../ ) コマンドの構文が誤っています。 Z:フォルダのパスの一部>( set FILE="No."3 mkdir !FILE! cd !FILE! copy nul !FILE!.xlsx cd ../ ) コマンドの構文が誤っています。 Z:フォルダのパスの一部>endlocal Z:フォルダのパスの一部>pause 続行するには何かキーを押してください・・・ 以上です。やはり構文が誤っています。のエラーメッセージが出ているようです。ここからどのように修正すればよいかご教授いただけないでしょうか。宜しくお願い致します。
guest

回答1

0

推測です。
ネットワークドライブ上にあるファイル number.txt の内容は、
ローカルで試したときに読み込まれる number.txt とは異なっていませんか?
それなら結果が異なることの説明ができます。

さらに推測ですが、number.txt の各行末に空白文字が入っていたりしませんか?
それなら copy nul "No."1 .xlsx のようになって構文エラー(パラメーターが多い)となり得ます。

投稿2021/06/17 13:38

itagagaki

総合スコア8402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cham2525

2021/06/29 14:28

ご連絡が大変遅くなり申し訳ございません。 確認したところ、ネットワークドライブ上のnumber.txtは数字の後ろに\t(正規表現)が入っていたため、構文エラーになっていたようです。ご回答いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問