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

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

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

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

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

1回答

516閲覧

batで作成日の新しいファイルを別フォルダに3個コピーする

ljfyhgddhjdh

総合スコア0

Windows 10

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

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2023/10/23 10:17

編集2023/10/24 03:02

batによるファイルのコピー

  • フォルダAから更新日時(作成日でも可)が新しいファイルを3個フォルダBにコピーする

前提

プログラミング経験が浅く、独学で少しづつ理解を深めている状況です。
Windowsのbatファイルで想定してます。

皆様の知恵をお貸し頂ければと思います、よろしくお願い致します。

該当のソースコード

bat

1set local enabledelayedexpansion 2set folderA=C:\Work\A 3set folderB=C:\Work\B 4set copise=5 5 6rem 更新日時が新しい順にファイル一覧を得る 7for /f "delims=" %%A in ('dir /b /o-d') do ( 8 set file=%%A 9 set /a copise-=1 10 11 rem ファイルコピー 12 if !copise! geq 0( 13 copy !file! %folderB%\ 14 )else( 15 echo エラー 16 pause 17 ) 18) 19endlocal

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

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

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

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

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

novelistory

2024/01/04 03:04

ソースコードのご提示ありがとうございます。 記載のソースコードにてbatを実行した結果、どのようなエラー、もしくは想定外の事象(やりたいことと違う挙動)があるのでしょうか? 質問を編集し、ご回答いただけますと回答を得られやすくなるかと思います。
guest

回答1

0

独学で少しづつ理解を深めている状況です。

ということなので、まずは材料だけ書きますので、足りなければコメントください。

1.更新日時が新しい順にファイル一覧を得る
dir /b /o-d

2.コマンドを実行してその出力行を順番に得る
for /f "delims=" %%A in ('dir /b /o-d') do echo %%A

3.個数を数える
set /a N+=1

4.ループの中での環境変数参照
%N%でなく、先頭でsetlocal enabledelayedexpansionして、!N!で参照。

投稿2023/10/23 11:01

otn

総合スコア86285

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

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

ljfyhgddhjdh

2023/10/24 03:01

回答ありがとうございます。 質問のソースコードに追加したのですがまだ理解しきれてないとこが多々あり正常に動作しません。 お忙しいところ恐縮ですが間違ってる箇所など指摘いただければ幸いです。
otn

2023/10/24 11:31

1.これくらいは自分で気づきましょうという点 setlocal と set local は全く違います。 2. これは初めてだと分からないのかも知れない点 「if 条件 コマンド」や[else コマンド」の「条件とコマンドの間」「elseとコマンドの間」には空白が必要です。 3.間違いとは言い切れないがそれでいいのか?と言う点 6個目以降のファイルは「エラー」と表示してpauseというコードになってますが、 「通常ファイルは5個以下しかあり得ず、6個以上あると言うことは異常事態でエラーだ」ということなのでしょうか? 質問を読んで「沢山ファイルがあるうちの新しい○個をコピーする」と思ったのですが。 (質問文には3と書いてありますがコードが5なので、本当は5ということですかね?)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問