[前の記事]« 最新更新日付のファイルを検出する方法
[次の記事]PC98のMS-DOS3.3Dで動いていたアプリの印刷機能が5.0Aで動かない »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「PAUSE,CHOICE…キー入力待ち/時間待ち」索引へ
▲カテゴリー「SET, PATH, %環境変数%」索引へ
▲カテゴリー「文字列の操作」索引へ

対話的に入力されたフルパス文字列の検査

1347.
画面から入力されたファイル名(フルパス)にファイルをコピーする方法
2006年09月01日(金) 00時36分
ma
●DOS/Windowsのバージョン↓
WindowsXP

あるファイルを画面から入力された
ファイル名(フルパス)でコピーする
バッチファイルを作成しようとしています。

ファイル名はフルパスで入力するのですが、
入力されたディレクトリがなければ
作成し、そのディレクトリ配下にファイルを
コピーします。

入力された内容に<,>などが含まれていたり、
入力がフルパスでなかった場合などは
エラーメッセージを出力して、
処理を終了したいのですが、
どのようなチェックをおこなえばよいでしょうか?

具体的には以下のような入力を
エラーとしてはじきたいです。


<aaa
C:/aaaa
C:\\bbb.txt
1349.
Re:画面から入力されたファイル名(フルパス)にファイルをコピーする方法
2006年09月11日(月) 18時50分
otn
>●DOS/Windowsのバージョン↓
>WindowsXP
>
>あるファイルを画面から入力された
>ファイル名(フルパス)でコピーする
>バッチファイルを作成しようとしています。
>
>ファイル名はフルパスで入力するのですが、
>入力されたディレクトリがなければ
>作成し、そのディレクトリ配下にファイルを
>コピーします。
>
>入力された内容に<,>などが含まれていたり、
>入力がフルパスでなかった場合などは
>エラーメッセージを出力して、
>処理を終了したいのですが、
>どのようなチェックをおこなえばよいでしょうか?
>
>具体的には以下のような入力を
>エラーとしてはじきたいです。
>
>例
><aaa
>C:/aaaa
>C:\\bbb.txt

たぶん不可能ではないですが、コードを書く気がしないくらい面倒です。

不正文字を検出するのは、
set "A=%~1"
set "B=%A:/=%"
if not "%A%" == "%B%" goto error
のように、その文字(例では / )を削除した値と等しくなければその文字が元の文字列に入っていたということです。 

あとは、ディレクトリの段数が最大10段などの前提を置けば、
for /f "delims=\ tokens=1-10" %%A in ("%~1") do
で、%%A ... %%J にパス名を分解できます。
これをcallの引数にして、サブルーチン側でshift&cdしながらディレクトリの存在を調べてやる。
1350.
Re:画面から入力されたファイル名(フルパス)にファイルをコピーする方法
2006年09月12日(火) 01時18分
ma
>>●DOS/Windowsのバージョン↓
>>WindowsXP
>>
>>あるファイルを画面から入力された
>>ファイル名(フルパス)でコピーする
>>バッチファイルを作成しようとしています。
>>
>>ファイル名はフルパスで入力するのですが、
>>入力されたディレクトリがなければ
>>作成し、そのディレクトリ配下にファイルを
>>コピーします。
>>
>>入力された内容に<,>などが含まれていたり、
>>入力がフルパスでなかった場合などは
>>エラーメッセージを出力して、
>>処理を終了したいのですが、
>>どのようなチェックをおこなえばよいでしょうか?
>>
>>具体的には以下のような入力を
>>エラーとしてはじきたいです。
>>
>>例
>><aaa
>>C:/aaaa
>>C:\\bbb.txt
>
>たぶん不可能ではないですが、コードを書く気がしないくらい面倒です。
>
>不正文字を検出するのは、
>set "A=%~1"
>set "B=%A:/=%"
>if not "%A%" == "%B%" goto error
>のように、その文字(例では / )を削除した値と等しくなければその文字が元の文字列に入っていたということです。 
>
>あとは、ディレクトリの段数が最大10段などの前提を置けば、
>for /f "delims=\ tokens=1-10" %%A in ("%~1") do
>で、%%A ... %%J にパス名を分解できます。
>これをcallの引数にして、サブルーチン側でshift&cdしながらディレクトリの存在を調べてやる。

ご回答いただきありがとうございます。
やはり簡単にはできないようですね。
ご教授頂いた内容を踏まえて、
もう一度考えてみたいと思います。

 
 


カテゴリー「PAUSE,CHOICE…キー入力待ち/時間待ち」索引へ
カテゴリー「SET, PATH, %環境変数%」索引へ
カテゴリー「文字列の操作」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2006年09月01日 11:12に投稿されたエントリーのページです。

ひとつ前の投稿は「最新更新日付のファイルを検出する方法」です。

次の投稿は「PC98のMS-DOS3.3Dで動いていたアプリの印刷機能が5.0Aで動かない」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
 
このブログについて | 運営:有限会社メディアポート